本帖最后由 wangwei005x 于 2012-10-20 22:56 编辑
我最近刚接触arm 老板让调试一个串口也做不出来 现在的s3c2410开发板上预留有一个485的接口,用的max3160芯片,现在我想把这个串口调通。我在网上查到的代码一般如下:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
#include <errno.h>
#include <termios.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
int main()
{
char szsendbuf[4];
int fd,c,res,nsize = 4;
FILE *pfile;
int filel;
struct termios oldtio,newtio;
struct stat st;
fd = open("/dev/ttyS0",O_RDWR | O_NOCTTY);
tcgetattr(fd, &oldtio);
bzero(&newtio, sizeof(newtio));
newtio.c_cflag = B115200 | CRTSCTS | CS8 | CLOCAL | CREAD;
newtio.c_iflag = IGNPAR | ICRNL;
tcflush(fd, TCIFLUSH);
tcsetattr(fd, TCSANOW, &newtio);
stat("a.txt", &st);
pfile = fopen("a.txt", "r");
filel = st.st_size;
while(4 == nsize)
{
bzero(szsendbuf, 4);
nsize = fread(szsendbuf, 1, 4, pfile);
nsize = write(fd, szsendbuf, nsize);
}
fclose(pfile);
tcsetattr(fd, TCSANOW, &oldtio);
close(fd);
}
大概都是先打开设备,再设置串口属性,最后写一个读写的测试。如果我要用串口调试助手调试的话,是不是只需要设置好串口的属性,不需要后面的read write函数
while(4 == nsize)
{
bzero(szsendbuf, 4);
nsize = fread(szsendbuf, 1, 4, pfile);
nsize = write(fd, szsendbuf, nsize);
}
fclose(pfile);
tcsetattr(fd, TCSANOW, &oldtio);
close(fd);
}
串口调试助手在发送读写数据的时候,每次发送接收数据的时候都把上面的程序执行一次,在最后会关闭串口,下次发送接收在打开吗?
可能问题很白痴,但是实在是不懂 请懂的指教一下 |