用pyseri以64字节的增量在循环中发送起始地址

2024-09-30 20:26:41 发布

您现在位置:Python中文网/ 问答频道 /正文

在程序中首先我发送结束地址,然后我发送擦除删除所有以前的数据。然后发送闪存新数据的命令,然后发送闪存数据的起始地址。起始地址从0x4000开始,直到以64为增量的数据结束。使用上面的代码,我想发送0x4000作为0x00,0x40,0x00,比下一次增加64,即0x4040作为0x00,0x40,0x40,并继续增加64(0x40),直到结束地址

我正试着用Pyserial写起始地址。起始地址以字节形式发送,如下所示

1块0x00、0x40、0x00

2块0x00、0x40、0x40

3通道0x00、0x40、0x80

将其递增64,然后用序列号写入你知道吗

它打印错误的数据,并且它在1字节中的增量是40,80,而不是最后一个字节。感谢您的帮助

offset = 0
size = 64
Chunk = 0
counter = 0
Total_size = 147456

while(currentoffset < Total_size):
    TempBuff  = []
    No_Of_Bytes = Chunk * 64
    Address = 0x4000 + (Chunk * 64)

    for i in  range(str(hex(Address)).__len__(),2,-2):
        a = Address & 0xFF

        if (str(hex(a)).__len__() < 3):
            b = format(a, '#04x')

        else:
            b = hex(a)

        Address = Address >> 8
        TempBuff.append(b)
        ser.write(b)

        if TempBuff.__len__() < 3:
            ser.write("0x00")
        for indx in range(TempBuff.__len__()-1,-1,-1)  :
            ser.write(TempBuff[indx])

Chunk = Chunk + 1
offset += size  

Tags: 数据forsizelen字节address地址增量
1条回答
网友
1楼 · 发布于 2024-09-30 20:26:41
start_address = 0x4000
end_address = 0x8000
block_size = 64
for addr in range(start_address,end_address,block_size):
    addr_as_hex6 =  "%06x"%addr
    c1,c2,c3 = addr_as_hex6[:2],addr_as_hex6[2:4],addr_as_hex6[4:]
    print("SEND: 0x%s 0x%s 0x%s"%(c1,c2,c3))

我想。。。你知道吗

相关问题 更多 >