打印

arm2410 linux串口的程序问题

[复制链接]
1343|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wangwei005x|  楼主 | 2012-10-20 22:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 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);
}
串口调试助手在发送读写数据的时候,每次发送接收数据的时候都把上面的程序执行一次,在最后会关闭串口,下次发送接收在打开吗?
  可能问题很白痴,但是实在是不懂 请懂的指教一下

相关帖子

沙发
阿南| | 2012-10-21 16:09 | 只看该作者
你不用的时候再关闭,不用每次发送都打开、关闭,这样太麻烦了。

使用特权

评论回复
板凳
jlass| | 2012-10-22 09:27 | 只看该作者
楼主注意电脑上的串口是232的不是485的,得用转接器

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

1

帖子

0

粉丝