xiao 发表于 2023-5-24 09:10:35

调试

测试接收数据时,根据例程操作,在帧尾检查哪里总是不成立,打印数据发现,在帧尾数据左移那一步最是丢失最后一个字节或者中间某一字节丢失,请问这是什么原因啊?

If后要接end 发表于 2023-5-24 10:21:26

这里判断应该有些问题,不应该与上cmd_end,而是与上对应帧尾字节数的0xFF

xiao 发表于 2023-5-24 10:35:30

If后要接end 发表于 2023-5-24 10:21
这里判断应该有些问题,不应该与上cmd_end,而是与上对应帧尾字节数的0xFF

cmd_end变量初始化的值就是对应的帧尾,与上他应该没问题吧。打印cmd_end_tag数据就发现左移过程中会丢失数据

If后要接end 发表于 2023-5-24 10:54:31

xiao 发表于 2023-5-24 10:35
cmd_end变量初始化的值就是对应的帧尾,与上他应该没问题吧。打印cmd_end_tag数据就发现左移过程中会丢失 ...

cmd_end_tag只需要低位对应帧尾的字节数,其它字节不影响这个帧尾判断,或者你把测试的指令,工程发出来看看

xiao 发表于 2023-5-24 11:44:01

If后要接end 发表于 2023-5-24 10:54
cmd_end_tag只需要低位对应帧尾的字节数,其它字节不影响这个帧尾判断,或者你把测试的指令,工程发出来 ...

1、record_insert()函数第三个参数应该是指定位置吧,我在接收数据回调函数里面调用record_insert,执行出来的效果和record_add一样,并不是在指定位置插入数据。
2、在接收数据回调函数调用record_clear也没有执行,这是怎么回事啊

xiao 发表于 2023-5-24 11:56:08

开机收到第一帧数据record_clear操作成功了,之后的数据record_clear就没有成功,以下是逻辑处理,请问哪里有什么问题吗
for i=0, recv_packet_size do
                       record_add(5,31,packet..";")
                        if packet == cmd_head and cmd_head_tag == 0 then
                                cmd_head_tag = 1
                        end
                       
                        if cmd_head_tag == 1 then
                                store_buffer = packet
                                cmd_length = cmd_length + 1
                                cmd_end_tag = (cmd_end_tag << 8) | packet
                                record_add(5,27,cmd_end_tag)

                                if (cmd_end_tag & cmd_end) == cmd_end then
                                        local len = cmd_length - 1
                                        record_clear(5,28)
                                        set_text(5,30,0xFF)
                                        for j=0,len do
                                                record_insert(5,28,j,store_buffer..";")
                                        end
                                end
                        end
                end

If后要接end 发表于 2023-5-24 14:51:06

xiao 发表于 2023-5-24 11:56
开机收到第一帧数据record_clear操作成功了,之后的数据record_clear就没有成功,以下是逻辑处理,请问哪里 ...

虚拟屏一步步print一些字符串,看看哪里没有执行,或者哪里报错了

xiao 发表于 2023-5-24 16:03:11

If后要接end 发表于 2023-5-24 14:51
虚拟屏一步步print一些字符串,看看哪里没有执行,或者哪里报错了

数据显示在屏幕上都是十进制,请问怎么转换为16进制

If后要接end 发表于 2023-5-25 08:43:42

xiao 发表于 2023-5-24 16:03
数据显示在屏幕上都是十进制,请问怎么转换为16进制

具体找一下string.format的用法
页: [1]
查看完整版本: 调试