Android 串口通讯 可接收文本,HEX模式

本文档介绍如何在Android中实现串口通信,重点在于接收文本和HEX模式的数据。作者分享了在首次接触串口通信时遇到的挑战,并提供了一个参考链接,其中包含了关键的解码代码段,适用于遇到类似问题的Android开发者。
摘要由CSDN通过智能技术生成

公司碰到一个需求是用串口助手接收文本,我用的U转串连接电脑,用电脑串口助手做的测试,第一次接触这个也是头疼的不行对串口这方面也不了解,后来找了很多资料根据下面这个博客的代码进行了一下修改就搞定了,希望可以帮到像我一样有需要的新人,

https://blog.csdn.net/qq_35952946/article/details/78863871

可以参考一下这个网址的资料,我只把解码的那块代码贴上来

这是他代码里本身自带的接收数据代码
private class readThread extends Thread {

       public void run() {

           byte[] buffer = new byte[64];

           while (true) {
               Message msg = Message.obtain();
               if (!isOpen) {
                   break;
               }
               int length = MyApp.driver.ReadData(buffer, 64);
               if (length > 0) {
                   //String recv = toHexString(buffer, length);

                   String recv=  toCharString(buffer,length);//加了一个和简单的解码转成char就行
                   //char e = (char) buffer[0];

                 
要在C语言中使用串口接收hex数据,你可以使用串口通信库来完成这个任务。下面是一个简单的示例代码,演示如何接收并解析hex数据: ```c #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <fcntl.h> #include <termios.h> #define BUFFER_SIZE 1024 int main() { int serial_port = open("/dev/ttyS0", O_RDWR); // 打开串口设备 if (serial_port < 0) { perror("无法打开串口设备"); return -1; } struct termios tty; memset(&tty, 0, sizeof(tty)); if (tcgetattr(serial_port, &tty) != 0) { perror("无法获取串口属性"); return -1; } cfsetospeed(&tty, B9600); // 设置波特率为9600 cfsetispeed(&tty, B9600); tty.c_cflag &= ~PARENB; // 无奇偶校验位 tty.c_cflag &= ~CSTOPB; // 1位停止位 tty.c_cflag &= ~CSIZE; // 屏蔽字符大小位 tty.c_cflag |= CS8; // 8位数据位 tty.c_cflag &= ~CRTSCTS; // 禁用硬件流控制 tty.c_cc[VMIN] = 1; // 读取至少一个字节 tty.c_cc[VTIME] = 5; // 读取超时时间 if (tcsetattr(serial_port, TCSANOW, &tty) != 0) { perror("无法设置串口属性"); return -1; } char buffer[BUFFER_SIZE]; memset(buffer, 0, sizeof(buffer)); while (1) { int bytesRead = read(serial_port, buffer, sizeof(buffer)); // 读取串口数据 if (bytesRead > 0) { for (int i = 0; i < bytesRead; i++) { printf("%02X ", buffer[i]); // 打印hex数据 } printf("\n"); } } close(serial_port); // 关闭串口设备 return 0; } ``` 在这个示例代码中,我们使用了Linux系统的串口设备文件`/dev/ttyS0`,你可以根据实际情况修改为你所使用的串口设备文件。该代码打开串口设备并设置一些串口属性,然后不断地从串口读取数据并打印hex格式的数据。 请注意,这只是一个简单的示例代码,你可能需要根据你的实际需求进行适当的修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秋风落叶黄

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值