串口发送16进制数据
来源:互联网 发布:java.exe自动关闭 编辑:程序博客网 时间:2024/06/02 05:31
用串口调试助手时发现此工具可以发送 16进制的数据串
分析后,粗略实现如下:
// eg: unsigned char src[] = "02042A2A50575203" // 16进制的串 // 每1个字节可以存放2个16进制位// eg:16进制的 0x01 在内存中为(little-endian) 0000,0001 = (0x0 << 4 | 0x1)// 0x2a 0010,1010 = (0x2 << 4 | 0xa)// #define HEX_STR_LEN 17int hextoi(unsigned char * asic){ if(*asic >= 48 && *asic <= 57) { *asic -= 48; } else if(*asic >= 65 && *asic <= 70) { *asic = *asic - 65 + 10; } else if(*asic >= 97 && *asic <= 102) { *asic = *asic - 97 + 10; } else { return -1; } return 0;}int hex2numeric(void * src, unsigned int len, unsigned char * serialCmd){ if(src == NULL || serialCmd == NULL) { return -1; } unsigned char *sCmd = serialCmd; unsigned char *pStart = (unsigned char *)src; int i = 0; int j = 0; while(j < len/2) { if(!hextoi(&pStart[i]) && !hextoi(&pStart[i+1])) { sCmd[j] = ((pStart[i] << 4) | pStart[i+1]); } else { return -1; } j += 1; i += 2; } return 0;}/***********************************************************
* test
* send data like this***********************************************************/int main(int argc, char *argv[]){int fd = -1;unsigned char src[HEX_STR_LEN] = "02042A2A50575203";unsigned char serialCmd[HEX_STR_LEN/2];memset(serialCmd, 0x00, sizeof(serialCmd));if(hex2numeric(src, HEX_STR_LEN, serialCmd) < 0){// ...return;}
// open serial port
if((fd = open("/dev/ttyS0", O_RDWR | O_NOCTTY | O_NDELAY)) < 0){// ...return ;} SetSerialBaud(fd, B9600); SetSerialParity(fd, CS8, STOPB1, NULL); SetSerialFlowControl(fd, NOCTRL, 0);// ...write(fd, serialCmd, sizeof(serialCmd));// ...return 0;}
- 串口发送16进制数据
- 串口通信数据发送--字符发送和16进制发送--发送字节的间隔时间
- Qt5串口发送16进制数据,读取串口16进制数据
- Qt中串口16进制发送和接收数据
- QT QString字符串转16进制串口发送数据
- VB 串口发送,将文本中的字符串转化成16进制数据发送
- stm32的串口发送16进制数据,上位机16进制显示
- QT串口程序已16进制接受和发送数据
- QT串口程序已16进制接受和发送数据
- MFC单文档之串口通讯实现16进制数据的发送和接收
- JAVA-串口或者Socket发送16进制指令数据(硬件通讯)
- 串口发送数据类
- 串口发送数据类
- STM32 串口发送数据
- USART---串口发送数据
- USART---串口发送数据
- 串口发送数据
- c#串口发送数据
- 三种东西永远不要放到数据库里
- JMEditor V0.9.4开源在线公式编辑器全面支持主流浏览器
- Android学习笔记
- English_main
- 也学学机器学习
- 串口发送16进制数据
- Apache ActiveMQ教程
- 四大命令助你玩转Linux进程管理
- Fedora 17 安装 完全 指南
- IOS学习之IOS沙盒(sandbox)机制和文件操作(一)
- JVM类加载过程学习总结
- 约梭芬杀人算法 约梭芬杀人法
- Win7下Eclipse中文字体太小
- IOS学习之IOS沙盒(sandbox)机制和文件操作(二)