arm串口通信问题
1、可以直接用 minicom 或 超级终端 登录到arm上,所以串口应该是没问题的。
2、我是用 telnet 登陆到 arm 上控制 arm 的,所以不存在串口冲突问题。
3、我在arm上的串口发数据,pc端可以收到,但是
pc 给 arm 发数据,arm什么都收不到,为什么呢?怎么解决?
请高手指点啊!
程序代码:
pc发送端:
int main(int argc, char **argv){ int nLength; // 串口收到的数据长度 char cmd[50] = "abc123\0"; // 命令串 char ans[128]; // 应答串 /*初始化串口*/ char *dev = "/dev/ttyUSB0"; /*打开串口*/ int fd = open( dev, O_RDWR|O_NOCTTY|O_NDELAY ); if (fd == -1) { perror("Can't Open Serial Port"); return -1; } /*设置串口的校验位*/ set_speed(fd,115200); /*设置串口的波特率*/ if (set_Parity(fd,8,1,'N') == FALSE) { printf("Set Parity Error\n"); exit (0); } /*写串口函数*/ while(1) { printf("send:%s\n",cmd); write(fd, cmd, sizeof(cmd)); sleep(1); } /* 关闭串口*/ close(fd); return TRUE;}
int main(int argc, char **argv){ int nLength; // 串口收到的数据长度 char cmd[16] =""; // 命令串 char ans[128]; // 应答串 /*初始化串口*/ char *dev = "/dev/ttyS0"; /*打开串口*/ int fd = open( dev, O_RDWR|O_NOCTTY|O_NDELAY ); if (-1 == fd) { perror("Can't Open Serial Port"); return -1; } /*设置串口的校验位*/ set_speed(fd,115200); /*设置串口的波特率*/ if (set_Parity(fd,8,1,'N') == FALSE) { printf("Set Parity Error\n"); exit (0); } /*写串口*/ while(1) { memset(ans,0,sizeof(ans)); nLength = read(fd, ans, sizeof(ans)); printf("nLength = %d---recieved=%s\n",nLength,ans); sleep(1); } /* 关闭串口*/ close(fd); return 0;}