定义一个struct RS422的结构来存储传入的参数、设备文件描述符、以及收发数据缓存等信息,采用标准文件IO操作UART底层驱动实现数据收发。
该模块实现了应用层对于UART通信功能的封装,能够实现UART初始化、发送数据、接收数据以及关闭设备等功能。
无
l 结构体设计
1. Struct RS422,存储传入的UART相关参数、UART设备文件描述符、以及收发数据缓存等信息
typedef struct RS422{ dll_t node; devClass class; char name[32]; int32 fd; uint8 parity; //奇偶校验模式 uint32 uiBaudRate; char * buff; int32 buffMaxLen; int32 buffRealLen;//buffRealLen<=buffMaxLen }objRs422; |
2. 定义串口可选的波特率数值和内部枚举值的映射数组
LOCAL int speed_arr[] = { B2000000, B1500000, B921600, B115200, B57600, B38400, B19200, B9600, B4800, B2400, B1200, B300,B2000000, B1500000, B921600, B115200, B57600, B38400, B19200, B9600, B4800, B2400, B1200, B300, }; LOCAL int name_arr[] = {2000000, 1500000, 921600, 115200, 57600, 38400, 19200, 9600, 4800, 2400, 1200, 300,2000000, 1500000, 921600, 115200, 57600, 38400, 19200, 9600, 4800, 2400, 1200, 300, }; |
l 主要函数说明
函数原型 | objRs422 * rs422_init( char *name, uint8 parity, uint32 uiBaudRate ,int32 buffLen) |
功能描述 | 初始化RS422 |
输入参数 | char *name:设备文件名称; uint8 parity:奇偶位; uint32 uiBaudRate:波特率; int32 buffLen:数据缓冲区大小 |
输出参数 | 无 |
全局变量值的变化 | 无 |
返回值 | NULL-失败; objRs422 *-成功。 |
函数原型 | STATUS rs422_get(objRs422 * obj) |
功能描述 | 读取rs422数据到缓冲区 |
输入参数 | objRs422 * obj: rs422对象指针 |
输出参数 | 无 |
全局变量值的变化 | 无 |
返回值 | OK-成功 ERROR-失败 |
函数原型 | STATUS rs422_put(objRs422 * obj) |
功能描述 | 写入数据到rs422 |
输入参数 | objRs422 * obj: rs422对象指针 |
输出参数 | 无 |
全局变量值的变化 | 无 |
返回值 | OK-成功 ERROR-失败 |
函数原型 | STATUS rs422_close(objRs422 * obj) |
功能描述 | 关闭rs422设备 |
输入参数 | objRs422 * obj: rs422对象指针 |
输出参数 | 无 |
全局变量值的变化 | 无 |
返回值 | OK-成功 ERROR-失败 |
无
使用API实现一个串口收发的小程序
int rs422test(int argc, char **argv) { STATUS ret = OK; int i = 0; char *sendbuff; char *recvbuff; uint32 count = 0; int error = 0; int baudrate = 115200; int result = PASS; objRs422 * pRs422 = NULL;
pRs422 = rs422_init(“/dev/ttyPS1”,'n', baudrate,1024); if(NULL == pRs422) { ret |= ERR_INIT_RS422; OUT_MSG("init rs422 error\n"); result= FAIL; goto QUIT; } OUT_MSG("test RS422 start\n"); for(i = 0; i < count;++i) { strcpy(pRs422->buff,sendbuff); pRs422->buffRealLen=strlen(sendbuff); if (OK != rs422_put(pRs422)) { OUT_MSG("send data to rs422 failed.\r\n"); } if (OK != rs422_get(pRs422)) { OUT_MSG("receive data from rs422 failed.\r\n"); }else{ pRs422->buff[pRs422->buffRealLen]='\0'; OUT_MSG("recv %d:%s\n", i, pRs422->buff); if( !check(recvbuff, pRs422->buff, strlen(recvbuff))) { result = FAIL; } } } QUIT: if(PASS == result) OUT_MSG("test RS422 PASS\n"); else OUT_MSG("test RS422 FAIL\n"); /* Return happy */ return 0; }
|
无
好评率:100%
好评数量:0个
工作速度:5分
工作质量:5分
工作态度:5分
暂无评价
CPU/GPU ¥12000.00
CPU/GPU ¥25000.00
CPU/GPU ¥10000.00
CPU/GPU ¥30000.00
CPU/GPU ¥10000.00
CPU/GPU ¥15000.00
CPU/GPU ¥10000.00
CPU/GPU ¥10000.00
其他 ¥5000.00
其他 ¥5000.00
其他 ¥10000.00
其他 ¥10000.00
其他 ¥10000.00
其他 ¥10000.00
其他 ¥10000.00
其他 ¥10000.00
FPGA电路 ¥10000.00
DSP电路 ¥10000.00
DSP电路 ¥10000.00
DSP电路 ¥10000.00
DSP电路 ¥10000.00
DSP电路 ¥10000.00
DSP电路 ¥10000.00
DSP电路 ¥10000.00
DSP电路 ¥10000.00
DSP电路 ¥10000.00
DSP电路 ¥10000.00
CPU/GPU ¥10000.00
FPGA电路 ¥10000.00
DSP电路 ¥10000.00
DSP电路 ¥10000.00
FPGA电路 ¥10000.00
DSP电路 ¥10000.00
CPU/GPU ¥10000.00
DSP电路 ¥10000.00
DSP电路 ¥10000.00
DSP电路 ¥10000.00
DSP电路 ¥10000.00
DSP电路 ¥10000.00
CPU/GPU ¥10000.00
FPGA电路 ¥10000.00
FPGA电路 ¥10000.00
模拟电路 ¥10000.00
模拟电路 ¥5000.00
模拟电路 ¥5000.00
模拟电路 ¥5000.00
模拟电路 ¥10000.00
模拟电路 ¥10000.00
DSP电路 ¥10000.00
DSP电路 ¥10000.00
DSP电路 ¥10000.00
FPGA电路 ¥10000.00
DSP电路 ¥10000.00
DSP电路 ¥10000.00
DSP电路 ¥10000.00
DSP电路 ¥10000.00
CPU/GPU ¥20000.00
CPU/GPU ¥20000.00
CPU/GPU ¥20000.00
CPU/GPU ¥20000.00
CPU/GPU ¥15000.00
CPU/GPU ¥20000.00
CPU/GPU ¥18000.00
CPU/GPU ¥20000.00
其他 ¥10000.00
其他 ¥6000.00
其他 ¥2000.00
其他 ¥3000.00
其他 ¥12000.00
其他 ¥8000.00
FPGA电路 ¥5000.00
MCU电路 ¥4800.00
嵌入式 ¥50000.00
嵌入式 ¥50000.00
嵌入式 ¥50000.00
嵌入式 ¥50000.00
嵌入式 ¥50000.00
嵌入式 ¥50000.00
嵌入式 ¥50000.00
嵌入式 ¥50000.00
嵌入式 ¥50000.00
嵌入式 ¥50000.00
嵌入式 ¥50000.00
嵌入式 ¥50000.00
嵌入式 ¥50000.00
嵌入式 ¥50000.00
嵌入式 ¥50000.00
嵌入式 ¥50000.00
嵌入式 ¥50000.00
嵌入式 ¥50000.00
嵌入式 ¥50000.00
嵌入式 ¥50000.00
嵌入式 ¥50000.00
嵌入式 ¥50000.00
嵌入式 ¥50000.00
嵌入式 ¥50000.00
嵌入式 ¥50000.00
嵌入式 ¥50000.00
嵌入式 ¥50000.00
嵌入式 ¥50000.00
嵌入式 ¥50000.00
嵌入式 ¥50000.00
嵌入式 ¥50000.00
嵌入式 ¥50000.00
嵌入式 ¥50000.00
嵌入式 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
MCU电路 ¥50000.00
MCU电路 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥500000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00