服务器为SCO UINX5.05,连接了实达终端的串口通讯的问题,急,谢

bjxiaoye 2004-12-28 09:11:00
服务器为SCO UINX5.05 ,在com1上连接一实达终端,再在终端上连接读卡器,服务器通过com1给实达终端发送命令,由终端把命令转发给读卡器,读卡器能正确接收命令并返回正确的数据给实达终端,实达终端也能把读卡器返回的数据正常返回给服务器,但是服务器上我的程序只能接收到部分数据,如实达终端发送给服务器的数据为“12345678”,我只能收到“1234”,后面的数据无法接收,请问如何解决?急!!!谢谢!!!
...全文
115 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
NC 2004-12-30
  • 打赏
  • 举报
回复
楼主在哪里,你可以就近找当地的实达分公司要一本终端程序手册看看
blueflame 2004-12-30
  • 打赏
  • 举报
回复
在终端上的接收实现就是这么实现的
blueflame 2004-12-30
  • 打赏
  • 举报
回复
int inkey(t)
{
int key;

if (t <= 0)
return(0);

do {
key = getchar();
t--;
} while (key == -1 && t > 0);
return(key);
}
……

for (i=0; (temp[i]=inkey(i==0?100:8)) != -1; i++);
bjxiaoye 2004-12-30
  • 打赏
  • 举报
回复
楼主在北京.项目实施在南京
CLongSan 2004-12-29
  • 打赏
  • 举报
回复
代码如下:

1)打开串口
m_hMCom=open(sComid,O_RDWR);// 或m_hMCom=open(sComid,O_RDWR | O_NOCTTY |O_NDELAY);
2)设置串口属性:
struct termios Opt;

int i=tcgetattr(m_hMCom,&Opt);

tcflush(m_hMCom, TCIFLUSH);

Opt.c_cflag |=(CLOCAL|CREAD);
Opt.c_cflag &=~PARENB;
Opt.c_cflag &=~CSTOPB;
Opt.c_cflag &=~CSIZE;
Opt.c_cflag |=CS8 ;

Opt.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG ); //Input

Opt.c_oflag &= ~OPOST; //Output

Opt.c_iflag &= ~(IXON|IXOFF|IXANY);
Opt.c_iflag &= ~(INLCR|IGNCR|ICRNL);
Opt.c_iflag &= ~(INPCK);

switch(baud_rate)
{
case 9600:
cfsetispeed(&Opt,B9600);
cfsetospeed(&Opt,B9600);
break;
case 115200:
cfsetispeed(&Opt,B115200);
cfsetospeed(&Opt,B115200);
break;
case 19200:
cfsetispeed(&Opt,B19200);
cfsetospeed(&Opt,B19200);
break;
case 38400:
cfsetispeed(&Opt,B38400);
cfsetospeed(&Opt,B38400);
break;
default:
break;
}

Opt.c_cc[VTIME] = 10;
Opt.c_cc[VMIN] = 0; // Update the options and do it NOW

tcflush(m_hMCom, TCIFLUSH);

i=tcsetattr(m_hMCom,TCSANOW,&Opt);

3)写数据:正常;
4)读数据:
nread=read(m_hMCom,&chr,1);

问题出在读上,我用监控线在实达终端与服务器之间监控实达终端上传的数据,一切数据都正常,但我服务器的程序就是收不到完整的数据,有时候下一条命令能收到上一条命令的数据
tengulre 2004-12-28
  • 打赏
  • 举报
回复
贴点部分代码看看..

23,120

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧