在linux下用串口发送数据问题:

Valima 2007-10-15 10:39:36
在linux下用如下程序通过串口发送数据
char sendbuffer[66];
if(nwrite = write(fd, sendbuffer,64))>0)
{
printf("send data to uart success! nwrite = %d\n",nwrite);
}
else
{
printf("\nsend data to uart fail!\n");
}

当sendbuffer[]中含有数据 0 时,会出现发送失败的问题,即nwrite<= 0;
当sendbuffer中含有数据13,17,19等数据时,对方收到的数据是错误的,
这是什么问题,高手指教,急等!谢谢!

输入输出模式
options.c_cflag &= ~CSIZE;
options.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG); /*Input*/
options.c_oflag &= ~OPOST; /*Output*/

if (set_Parity(fd,8,1,'N') == FALSE)
{
printf("Set Parity Error\n");
//return -1;
}
...全文
405 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Valima 2007-10-16
  • 打赏
  • 举报
回复
不能发送数据0是怎么回事?
Valima 2007-10-15
  • 打赏
  • 举报
回复
数据中如果有0 可能会误认为是sendbuffer字符串结束了,可是那怎么发数据0呢?17,19又是什么东东呢? ASCII表中说17=控制字符ETB,19 =控制字符EM,13=控制字符CR
dai_weitao 2007-10-15
  • 打赏
  • 举报
回复
这还和发送的数据有关?
Valima 2007-10-15
  • 打赏
  • 举报
回复
波特率没问题,发其他数据可以现在的情况是将options.c_iflag = 0后,13,17,19数据可以发送了,但是数据 0还是不能发送,按理说发送函数应该根据发送长度发送数据,而不应判断字符串结束符吧。
cceczjxy 2007-10-15
  • 打赏
  • 举报
回复
确认一下波特率设置是否正确
Valima 2007-10-15
  • 打赏
  • 举报
回复
顶一下

23,110

社区成员

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

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