串口传文件+线程(300分)

  • 主题发起人 主题发起人 Chenlili
  • 开始时间 开始时间
C

Chenlili

Unregistered / Unconfirmed
GUEST, unregistred user!
我在nt下面玩串口通讯,用vmware来做测试工具
现在的问题是vmware下面linux接受winnt发的数据居然不同步!
我用的是spcomm控件。delphi5+win2kpro+vmware+BP2.0Linx
数据是在线程中传递的。why

 
流控、停止位设的一致吗?
 
这些就不用问了,
关键是现在数据传输不同步的问题。也就是说,windows线程中已经传完了
vmware里面还在接受,关键是速度相差也太远了。
 
弟兄们继续啊。
我怀疑window的buffer机制可能把buffer中没有发完的数据冲掉了
用getCommError等cbInQue/cbOutQue为0,再切换DCB.parity,也是
一样。没有EV_ERR发生,实际上用示波器看,数据根本没发出。
在WriteComm之前读出DCB的状态,确认DCB.parity已改,也一样。

用手工的方法,click button来切换DCB.parity,或经过延时,自动
切换回MARKPARITY,在timer中再发数据,又能发出去了。
 
太奇怪了!
你用系统自己带的超级终端试验了吗?
 
波特率是否一致
 
不要把我看得这么弱智
现在不是说不能通讯,是数据传到一半的时候就挂住了
for i:=1 to size do
begin
fa := i;
FPDA.Read(sbuf,1);
sendData(1);
Synchronize(MyPaint);
end;
getMd5string(temp);
for i:=1 to 16 do begin
sbuf[0]:= temp;
Synchronize(MyPaint);
sendData(1);
end;
linux下面的程序可以接受getMd5string以前的数据,以后的就一直在那里等了
why?
 
我做工业控制程序就是用线程和串口与控制设备通讯的,包括读和写操作。
工作很正常,没有发现你说的那种问题。
 
继续继续,给点实质性的东西。
 
如果是因收/发速度不匹配造成数据丢失,请加握手。。。
 
chenlili:
能告知在下,spcomm(带源码)在delphi5.0下如何安装?本人为何总装不成功!
email:tangsj@cn99.com
 
就按一般的安装方法就可以了,Component->Install Comonent就可以了
另外你出了什么错误最好说清楚一点,你这样的话等于没有说。
 
To Chenlili:
spcomm!给我一份吧!
 
多人接受答案了。
 
后退
顶部