大家好,最近小弟在用实验室买的豪华板做一些小的实验,平台是arm(三星的s3c44b0x)+uclinux,是关于串口通信的,我想在com1上挂接一个gprs设备,com0接pc,其实写的测试程序很简单,用com1发送和接收数据,现在碰到一个问题是com1可以发送数据,但是无法接受数据,我觉得很奇怪,因为我的程序没那么复杂,各位牛人都知道串口通信主要是一些设置,然后write、read(不知道我说的对不对),我把程序贴上来,这个程序里有写也有读,也就是我把com1的那根串口线的rxd和txd短接了,按理来说发什么就应该收到什么。请各位帮我看看,我是真心请教,谢谢大家,程序写的很烂,大家别笑话俺了。
#include <stdio.h>
#include <string.h>
#include <malloc.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <termios.h>
#include <sys/uio.h>
#include "math.h"
int main(){
int fd;
char *rbuf,hd[16]={0x0},sbuf[1]={'H'};
int retv,count=0;
unsigned int num=0;
struct termios oldtio;
fd=open("/dev/ttyS1",O_RDWR|O_NOCTTY|O_NDELAY);
if(fd<0){
perror("open /dev/ttyS1");
return -1;
}
tcgetattr(fd,&oldtio);
cfmakeraw(&oldtio);
cfsetispeed(&oldtio,B9600);
cfsetospeed(&oldtio,B9600);
oldtio.c_cflag |= (CLOCAL | CREAD);
oldtio.c_cflag &= ~PARENB;
oldtio.c_cflag &= ~CSTOPB;
oldtio.c_cflag &= ~CSIZE;
oldtio.c_cflag |= CS8;
option.c_oflag &= ~OPOST;/*原始数据的输出通过设置c_oflag的OPOST标志*/
oldtio.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG);
oldtio.c_iflag &= ~(IXON | IXOFF | IXANY);
oldtio.c_cc[VTIME] = 1;
oldtio.c_cc[VMIN] = 0;
tcsetattr(fd,TCSANOW,&oldtio);
rbuf=hd;
while(count<500){
sbuf[0]=num;
retv=write(fd,sbuf,1);
sleep(1);
retv=read(fd,rbuf,1);
printf("%xH\n",*rbuf);
num++;
count++;
}
close(fd);
return 0;
}