線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1809
推到 Plurk!
推到 Facebook!

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

尚未結案
wujunan2000
一般會員


發表:1
回覆:0
積分:0
註冊:2004-11-04

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-11-04 15:04:18 IP:218.65.xxx.xxx 未訂閱
最近要写一个与智能仪器通信的程序,智能仪器连串口,发特定的字符串到串口,将从串口返回一定的字符串!在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; 期盼大侠回复! wujunan@hotmail.com 發表人 - wujunan2000 於 2004/11/04 15:05:32
系統時間:2024-04-27 0:38:27
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!