david

david

33个粉丝

368

问答

253

专栏

229

资料

david  发布于  2012-11-25 23:00:03
采纳率 1%
368个问答
一个爱徒步的~IT民工
4668

【学习资料】串口操作测试代码

 
#include //标准输入输出定义
#include //文件控制定义
#include //错误代码定义
#include //unix标准函数定义
#include //定义串口结构termios,并包含
#include //字符串函数定义

#define SERIAL_PORT "/dev/ttyS0" //使用串口1;1,2分别对应/dev/ttyS0和/dev/ttyS1
#define BAUDRATE B9600 //波特率为9600bps
#define MAX_SIZE 255

int main()
{
int int_SerialFD;
char Buff_Content[MAX_SIZE];
int int_Flag;
struct termios OldTerm,NewTerm; //数据结构termios,这个在文件include\asm-arm\termios.h中定义

int_SerialFD = open(SERIAL_PORT,O_RDWR|O_NOCTTY);//O_RDWR表示以读写方式打开串口,
//O_NOCTTY表示该程序不想成为该段口的控制终端,成功返回文件描述符,错误返回-1

if (int_SerialFD < 0) //出错显示错误
  {
   printf("Open serial port %s error",SERIAL_PORT);
   perror("Error reason");
   return(-1);
  }
tcgetattr(int_SerialFD,&Old_Term); //得到串口的原始属性
bzero(&NewTerm,sizeof(NewTerm)); //清空新的串口属性结构
fcntl(int_SerialFD,F_SETFL,0); //阻塞read()操作,读不到数据就阻塞
NewTerm.c_cflag |= CLOCAL|CREAD; //使能接收,并设置本地状态
NewTerm.c_cflag &= ~PARENB; //无校验位
NewTerm.c_cflag &= ~CSTOPB; //一位停止位
NewTerm.c_cflag &= ~CSIZE; //屏蔽字符大小
NewTerm.c_cflag |= CS8;  //8位数据
NewTerm.c_lflag &= ~(ICANON|ECHO|ECHOE|ISIC); //选择原始输入法
NewTerm.c_oflag &= ~OPOST; //选择原始数据输出
NewTerm.c_cc[VMIN] = 8; //指定所要读取字符的最小数量
NewTerm.c_cc[VTIME] = 1; //指定读取第一个字符的等待时间,时间的单位为n*100ms
//如果设置VTIME=0,则无字符输入时read()操作无限期的阻塞
cfsetispeed(&NewTerm,BAUDRATE); //设置串口输入端波特率
cfsetospeed(&NewTerm,BAUDRATE); //设置串口输出端波特率
int_Flag = tcsetattr(int_SerialFD,TCSANEW,&NewTerm); //立即将新属性赋予串口
if (int_Flag<0)
  {
   
  }
Buff_Content[0] = 1; //设置控制器地址编号
Buff_Content[1] = 0xfb; //设置取数据指令
int_Flag = write(int_SerialFD,Buff_Content,2); //发取数据指令

if (int_Flag<0)
  {
   
  }
int_Flag = read(int_SerialFD,Buff_Content,255); //返回实际读取的字符数目
printf("%d bytes read successfully.\n",int_Flag);
for(i=0;i {
  printf("%x\t",Buff_Content);  //以16进制的形式输出字符
}
int_Flag = tcsetattr(int_SerialFD,TCSANOW,&OldTerm); //恢复原有串口的属性
if (int_Flag<0)
  {
   
  }
int_Flag = close(int_SerialFD); //关闭串口设备文件
if (int_Flag<0)
  {
   
  }
return(0);
}
我来回答
回答2个
时间排序
认可量排序

ngswfx

1个粉丝

55

问答

1

专栏

40

资料

ngswfx 2016-07-06 00:32:21
认可0
本帖最后由 ngswfx 于 2016-7-6 01:02 编辑

顶,呵呵,好多人还在找,就是找不到






////////////刚进入论坛的朋友,真应该从最后一页往前看一遍,就看那些自己认为有可能用到的。

cfgrpg

0个粉丝

7

问答

0

专栏

1

资料

cfgrpg 2016-07-06 16:04:09
认可0
有个开源的串口代码,windows和linux 可以用,关键词 RS-232
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
+ 添加网盘链接/附件

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
相关问答
无更多相似问答 去提问
举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

易百纳技术社区