D dajiangxu Unregistered / Unconfirmed GUEST, unregistred user! 2007-03-31 #1 现在在做一个串口通讯程序,程序每秒钟向串口发一条指令,然后串口会返回一个数据。不知道怎么回事情,程序运行一段时间后,串口不能返回数据。需要重新启动一下程序才可以继续返回数据。哪位大哥能帮帮,给点建议?
D dajiangxu Unregistered / Unconfirmed GUEST, unregistred user! 2007-03-31 #4 下位机是好的。 “看看你的程式缓冲是否溢出死掉”这个怎么检查啊?能不能提供点详细的资料。我用的是Tcomm控件。
D dingjiabao Unregistered / Unconfirmed GUEST, unregistred user! 2007-03-31 #5 在你发送或接收数据的过程中可能会出现奇偶校验错误, 或者你加入的和校验, CRC校验的错误, 或者电流干扰,导致数据畸变, 你的缓冲区可能会有垃圾数据, 在判断出有错误的地方清空接收缓冲区 比如 .net的System.IO.Ports.SerialPort.DiscordInBuffer();
在你发送或接收数据的过程中可能会出现奇偶校验错误, 或者你加入的和校验, CRC校验的错误, 或者电流干扰,导致数据畸变, 你的缓冲区可能会有垃圾数据, 在判断出有错误的地方清空接收缓冲区 比如 .net的System.IO.Ports.SerialPort.DiscordInBuffer();
D dajiangxu Unregistered / Unconfirmed GUEST, unregistred user! 2007-03-31 #6 谢谢 我用的是Tcomm控件。程序根本不报错误,就是不能从串口读数据。
D dajiangxu Unregistered / Unconfirmed GUEST, unregistred user! 2007-03-31 #7 是不是缓冲区已经满了,不能继续接收数据?导致程序不能触发OnRxChar事件?
壁 壁画 Unregistered / Unconfirmed GUEST, unregistred user! 2007-04-01 #8 我遇到过这样的情况。后来也没有真正找到是外部设备还是软件的原因,或者是现场干扰。 你这样试试看,如果超过你设定的时间间隔没有数据返回,你关闭串口,然后重新打开。
壁 壁画 Unregistered / Unconfirmed GUEST, unregistred user! 2007-04-01 #9 我遇到过这样的情况。后来也没有真正找到是外部设备还是软件的原因,或者是现场干扰。 你这样试试看,如果超过你设定的时间间隔没有数据返回,你关闭串口,然后重新打开。
M muhx Unregistered / Unconfirmed GUEST, unregistred user! 2007-04-03 #11 每秒发送一条指令是怎么做到的? 如果使用Timer或者GetTickCount就要注意上一秒的指令是否已经完成了 通讯往往会有很多特殊情况,比如信号不好,或者干扰,或者断线等等 在长时间运行也就容易出现一秒中完不成任务,资源没有释放而累计到下次 所以建议使用一个单独的线程控制 当本次命令完成后再进行下次的命令
每秒发送一条指令是怎么做到的? 如果使用Timer或者GetTickCount就要注意上一秒的指令是否已经完成了 通讯往往会有很多特殊情况,比如信号不好,或者干扰,或者断线等等 在长时间运行也就容易出现一秒中完不成任务,资源没有释放而累计到下次 所以建议使用一个单独的线程控制 当本次命令完成后再进行下次的命令
D dajiangxu Unregistered / Unconfirmed GUEST, unregistred user! 2007-04-03 #12 来自:壁画, 时间:2007-4-1 15:07:40, ID:3693557 我遇到过这样的情况。后来也没有真正找到是外部设备还是软件的原因,或者是现场干扰。 你这样试试看,如果超过你设定的时间间隔没有数据返回,你关闭串口,然后重新打开。 和你说的一样,关掉串口重新打开就可以了.郁闷啊!
来自:壁画, 时间:2007-4-1 15:07:40, ID:3693557 我遇到过这样的情况。后来也没有真正找到是外部设备还是软件的原因,或者是现场干扰。 你这样试试看,如果超过你设定的时间间隔没有数据返回,你关闭串口,然后重新打开。 和你说的一样,关掉串口重新打开就可以了.郁闷啊!
M mingzy Unregistered / Unconfirmed GUEST, unregistred user! 2007-04-10 #14 你设置为一个字节就触发,看看如何,可能时间长了,有干扰信号,导致。。。