找回密码
 注册
查看: 664|回复: 4

为什么PC连PC就能读串口数,PC连PID控制器就读不到呢!

[复制链接]
发表于 2004-11-4 14:48:39 | 显示全部楼层 |阅读模式
最近要写一个与智能仪器通信的程序,智能仪器连串口,发特定的字符串到串口,将从串口返回一定的字符串!在WIN下,只要设好波特率9600,数据位7,停止位1,偶校验就可以马上通信,直接SEND后,不停的READ就能读到返回的数据.可在LINUX下,我将经典的代码改了下,如果是两台计算机串口直连,这个程序可以成功收发数据!但连上仪器就是收不到数据,请大侠们指点下吧!
c_cc[VTIME] = 0
c_cc[VMIN] = 5这两个参数我也试了,都没有用!我的代码如下!
打开串口的代码:
var
ios: termios;
aa: integer;
begin
fd:= LibC.Open (port,fmOpenReadWrite or o_nonblock);
tcgetattr (fd,ios);
cfmakeraw (ios);
cfsetospeed (ios, b9600);
cfsetispeed (ios,b9600);
ios.c_cflag := ios.c_cflag and (not PARENB);
ios.c_cflag := ios.c_cflag or (not PARODD);
ios.c_cflag := ios.c_cflag and (not CSTOPB);
ios.c_cflag := ios.c_cflag and (not CSIZE);
ios.c_cflag := ios.c_cflag or (not CS7);
ios.c_lflag := ios.c_lflag and (not (ICANON or ECHO or ECHOE or ISIG));
ios.c_oflag :=ios.c_oflag and ( not OPOST);
ios.c_oflag := 0 ;
ios.c_lflag:=0;
tcflush(fd, TCIFLUSH);
tcsetattr (fd,tcsanow,ios);
end
写串口的代码:
var
d:string;
resultat: integer;
begin
d:= memo1.Text;
resultat:= FileWrite (fd, d[1], Length(d));
WriteLabel.Caption:= IntToStr (resultat)
end;
读串口的代码:
var
a:array [1..4096] of char;
s:string;
zaehler, index: integer;
begin
s:= '';
zaehler:= FileRead (fd, a, sizeof (a));
ReadLabel.Caption:= IntToStr (zaehler);
if zaehler > 0
then begin
for index:= 1 to zaehler do
s:= s + a [index];
memo2.Text:= s
end
end;
期盼大侠回复!
发表于 2004-11-4 18:19:20 | 显示全部楼层
你最好弄个二分头,同时接到仪器和另一个串口,打开minicom或超级终端监视,如果minicom或超级终端能接受到数据,而仪器不能。。。。这。。。。这。。。。我也不知道是什么问题。。。电平不兼容?
回复

使用道具 举报

 楼主| 发表于 2004-11-4 21:41:57 | 显示全部楼层
谢谢回复,能具体将下如何监视嘛!查了些资料,都是讲MINICOM测MODEM的,没有见到讲监视的文章,还有二分头的作用的不是看从串口SEND数据后,数据是不是已经发出所以用另一个COMM检测下呢!
电平不兼容,也不象啊,同样的环境,进WINDOWS就没有问题,进LINUX就不行,真的是搞不懂!
对了我在串口属性设置上有没有什么不妥吗!
回复

使用道具 举报

发表于 2004-11-5 10:35:02 | 显示全部楼层
minicom跟超级终端的作用差不多,不一定是modem,所有从串口进来的东西都可以。
回复

使用道具 举报

 楼主| 发表于 2004-11-15 20:03:07 | 显示全部楼层
问题已经解决,用一太WIN2K,运行串口监视程序来看哪种属性设置有效,结果发现默认十7S1,按照LINUX GUIDE上得程序,只有在8N1是才是对得,其余得代码敲上去都不能和在WIN2K上设置了同样属性得串口监视程序通信,都有数据位出错,得到非法字符的问题,还好我的控制器也支持8N1,通讯也成功了,先将就这用吧,唉,不理解啊!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2025-2-11 15:52 , Processed in 0.037535 second(s), 15 queries .

© 2001-2025 Discuz! Team. Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表