这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » LINUX下串口通信的问题:为什么0X00之后的字符串全是0x00呢?我自己的办

共1条 1/1 1 跳转至

LINUX下串口通信的问题:为什么0X00之后的字符串全是0x00呢?我自己的办法错在哪里?

菜鸟
2005-03-31 03:14:33     打赏

现在我在做LINUX+ARM串口通信的项目,本来编写了一个很简单的一个串口发送程序,可是发现了一个问题: 我的代码如下: int main() { int length,retv,spfd; char *buffer; char frame[]={0xA1,0x23,0x00,0x34,0x76}; spfd = open("/dev/ttyS0",O_RDWR|O_NOCTTY);

串口打开,设置等操作。。。。省略 length = sizeof(frame)/sizeof(char); buffer =(char *)malloc(length);

strncpy(buffer,frame,length); write(spfd, buffer,length);

free(buffer); close(spfd); } 结果: 收到的字符是0xA1,0x23,0x00,0x00,0x00 也就是说,从0x00之后的都变为0x00.

我查找了相关资料,分析如下: 在C语言中,空格(ASCII为0,即0X00)是串结束符号,所以0x00符以ASCII文本方式是不能从串口发送的,解决的办法是指定数据发送的长度,这样数据就不会停止了。

问题分析:我自己的程序中,已经指定了发送长度length,可是为什么还是在0x00之后的数据不发送??难道0x00比指定长度有更高的优先级?

高手请出手。。。。 谢谢!




关键词: LINUX     串口     通信     问题     为什么     后的     字符串    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]