完全无法理解的bug!求助!一个简陋的采集系统镇楼
arduino吧
全部回复
仅看楼主
level 3
kW_DC600V 楼主
完全无法理解的bug!求助!一个简陋的采集系统镇楼
2020年12月06日 15点12分 1
level 3
kW_DC600V 楼主
是关于pc和arduino通信的问题,用win32API写了一个pc和arduinoNano之间互传数据的程序,然而这个程序在特定条件下,无法工作:
2020年12月06日 15点12分 2
level 3
kW_DC600V 楼主
如图所示,如果arduinoNano上电之后,立刻向它发送数据,根据win32API返回值可知,数据发送成功但没有回复
2020年12月06日 15点12分 3
level 3
kW_DC600V 楼主
但是,如果上电之后,先打开ide自带的串口监视器一次并关闭,再发送数据,通信成功
2020年12月06日 15点12分 4
level 3
kW_DC600V 楼主
还有另一种情况也可以成功,使用自编程序通信失败一次之后,重启自编程序,就可以通信成功
2020年12月06日 15点12分 5
level 3
kW_DC600V 楼主
然而,五楼的那种做法,必须要求重启进程一次,如果在同一个进程里面反复发送,会一直失败。win32API的返回值表明:已发送但未回信
2020年12月06日 15点12分 6
level 8
while(!serial)或者什么别的原因吧,用逻辑分析仪捕捉一下会比较好分析。板子是ch340或者16u2
加3
28的话,打开串口监视器会产生一个dtr信号复位一次328(烧录的时候也是由dtr信号触发进入bl),试试看开软件按下复位键试试看吧。
2020年12月06日 16点12分 8
好的,谢谢[惊哭]
2020年12月07日 00点12分
老哥,再请教一下,试了试加dtr信号什么的,加dtr信号之后L指示灯会闪烁一次,和开ide自带串口监视器的表现相似,但是都没有用,还是要启动两次pc端程序,第一次一定会失败,第二次一定能通信成功……
2020年12月07日 02点12分
level 3
kW_DC600V 楼主
而且,可以看到Nano单片机的RX、TX跟随pc发出指令的频率闪烁,说明Nano知晓pc发出的指令。
进一步,将Nano程序的对应区段加上控制13引脚的程序,也可以看到L灯跟随pc发出指令而闪烁,进一步证明Nano可以收到并识别pc发出的特定字符。
2020年12月07日 04点12分 9
level 8
收能收到,发也能发出,但是上位机接口读不到还要再开一次接口,这问题在上位机吧,抛开板上的ch340不谈,单独用转串口线接到p0/1,开端口是什么表现,有那种silabs的cp21xx转串口,也有ftdi的那种,github上面某些和ch340有关的库也会出点问题,也许wch的驱动该背锅
2020年12月07日 05点12分 10
解决了,感谢
2020年12月07日 16点12分
1