搜索
bottom↓
回复: 18
打印 上一主题 下一主题

请教朋友们,关于LINUX串口开发的一个问题:

[复制链接]

出75入8汤圆

跳转到指定楼层
1
发表于 2023-9-14 14:35:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请教朋友们,LINUX串口数据发送接收开发流程是?以前用QT,UCLNUX用C语言,现在客户是LINUX系统,不让用QT,只能用C,请问怎么去实现?谢谢。

阿莫论坛20周年了!感谢大家的支持与爱护!!

你熬了10碗粥,别人一桶水倒进去,淘走90碗,剩下10碗给你,你看似没亏,其实你那10碗已经没有之前的裹腹了,人家的一桶水换90碗,继续卖。说白了,通货膨胀就是,你的钱是挣来的,他的钱是印来的,掺和在一起,你的钱就贬值了。

出0入0汤圆

2
发表于 2023-9-14 14:48:40 | 只看该作者
有C的例程。直接能用

出0入0汤圆

3
发表于 2023-9-14 15:06:59 | 只看该作者
可以使用libserialport或者CSerialPort

出0入420汤圆

4
发表于 2023-9-14 15:24:00 | 只看该作者
打开一个串口设备就可以读写访问了

出75入8汤圆

5
 楼主| 发表于 2023-9-14 15:26:17 | 只看该作者
爱晴海玩偶 发表于 2023-9-14 14:48
有C的例程。直接能用
(引用自2楼)

谢谢,应该有库吧。

出0入36汤圆

6
发表于 2023-9-14 15:26:37 来自手机 | 只看该作者
c语言直接搞呀,或者go

出75入8汤圆

7
 楼主| 发表于 2023-9-14 15:26:46 | 只看该作者
jenkins 发表于 2023-9-14 15:06
可以使用libserialport或者CSerialPort
(引用自3楼)

谢谢,这个是库吧

出75入8汤圆

8
 楼主| 发表于 2023-9-14 15:27:49 | 只看该作者
hameyou 发表于 2023-9-14 15:24
打开一个串口设备就可以读写访问了
(引用自4楼)

谢谢,您最聪明,不打开那是搞不了。

出75入8汤圆

9
 楼主| 发表于 2023-9-14 15:28:37 | 只看该作者
redworlf007 发表于 2023-9-14 15:26
c语言直接搞呀,或者go
(引用自6楼)

在虚拟机中搞?用文本敲了以后编译?

出0入36汤圆

10
发表于 2023-9-14 15:43:23 | 只看该作者
ZHAOBAO511 发表于 2023-9-14 15:28
在虚拟机中搞?用文本敲了以后编译?
(引用自9楼)

用c的话我是在Linux虚拟机里面安装好交叉编译器,然后在虚拟机里面装好cmake,然后在Windows上用vscode远程登录Linux虚拟机,然后调用cmake,cmake再调用交叉编译工具来编译程序。

https://www.amobbs.com/thread-5726372-1-1.html

用go的话,直接在Windows上编写代码,编译成Linux上的程序,放到Linux上跑就好了。


出75入8汤圆

11
 楼主| 发表于 2023-9-14 15:50:08 | 只看该作者
redworlf007 发表于 2023-9-14 15:43
用c的话我是在Linux虚拟机里面安装好交叉编译器,然后在虚拟机里面装好cmake,然后在Windows上用vscode远 ...
(引用自10楼)

谢谢,我看看。

出0入115汤圆

12
发表于 2023-9-14 16:12:08 来自手机 | 只看该作者
建议问chatgpt

出90入372汤圆

13
发表于 2023-9-14 16:21:14 | 只看该作者
以下内容来之GPT3.5

LINUX串口 C语言如何开发
在Linux下使用C语言进行串口开发需要遵循一定的步骤。以下是一个简单的示例,演示如何在Linux中使用C语言开发串口应用程序:

包含头文件: 首先,在你的C程序中包含必要的头文件,这些头文件定义了串口编程所需的函数和常量。常用的头文件包括<stdio.h>和<string.h>。
#include <stdio.h>
#include <string.h>
#include <fcntl.h>   // 用于文件控制操作
#include <termios.h> // 用于串口控制操作
#include <unistd.h>  // 用于Unix标准函数
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
打开串口: 使用open函数来打开串口设备。你需要指定串口设备的路径,例如/dev/ttyS0或/dev/ttyUSB0。
int fd; // 串口文件描述符

fd = open("/dev/ttyS0", O_RDWR | O_NOCTTY);
if (fd == -1) {
    perror("无法打开串口");
    return -1;
}
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
配置串口参数: 使用termios结构体来配置串口参数,包括波特率、数据位、停止位、校验位等。
struct termios options;

tcgetattr(fd, &options);
cfsetispeed(&options, B9600); // 设置输入波特率
cfsetospeed(&options, B9600); // 设置输出波特率

options.c_cflag |= (CLOCAL | CREAD); // 启用本地连接和使能接收
options.c_cflag &= ~PARENB;          // 禁用奇偶校验
options.c_cflag &= ~CSTOPB;          // 1停止位
options.c_cflag &= ~CSIZE;           // 清除数据位设置
options.c_cflag |= CS8;              // 8数据位

tcsetattr(fd, TCSANOW, &options); // 设置串口参数
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
发送和接收数据: 使用write函数来发送数据到串口,使用read函数来接收数据。
char buffer[255];
int n;

n = write(fd, "Hello, Serial!\n", 14); // 发送数据
if (n < 0) {
    perror("写入串口失败");
}

n = read(fd, buffer, sizeof(buffer)); // 接收数据
if (n < 0) {
    perror("读取串口失败");
}
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
关闭串口: 最后,使用close函数关闭串口。
close(fd); // 关闭串口
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
这是一个简单的示例,用于在Linux中使用C语言开发串口应用程序。你可以根据你的需求和具体的串口设备进行更详细的配置和处理。请确保在使用串口时谨慎操作,以避免潜在的硬件问题。


用什么编译器删除记录删除这句重新提问
在Linux下使用C语言进行编程时,通常可以使用以下几个常见的编译器:

**GCC (GNU Compiler Collection)**:GCC 是一个开源的编译器集合,包括C、C++、和其他编程语言的编译器。在大多数Linux发行版中,GCC 已经预装并可用。你可以使用以下命令来编译C程序:

gcc your_program.c -o your_program
                                                                                                                                                            
Clang:Clang 是另一个流行的开源编译器,它以速度和精确性而闻名。在某些Linux发行版中,Clang 也可以作为替代选项使用。你可以使用以下命令来编译C程序:

clang your_program.c -o your_program
                                                                                                                                                            
**Intel C Compiler (icc)**:如果你的系统使用英特尔的处理器,你可以考虑使用英特尔 C 编译器 (icc) 来进行编译,以获得最佳性能。

icc your_program.c -o your_program
                                                                                                                                                            
其他编译器:除了上述编译器,还有一些其他的C编译器可供选择,但它们在Linux上的使用较少。

你可以根据自己的需求和偏好选择一个编译器。通常情况下,GCC 和 Clang 是最常用的选择,并且在大多数Linux系统上都可用。如果你使用的是特定于某个硬件或平台的编译器,那么你需要根据该平台的要求来选择适当的编译器。

在选择编译器之后,你可以使用相应的编译命令来将你的C代码编译成可执行文件,并开始运行和测试你的程序。

出0入0汤圆

14
发表于 2023-9-14 16:40:56 | 只看该作者
ZHAOBAO511 发表于 2023-9-14 15:26
谢谢,应该有库吧。
(引用自5楼)

我直接找的源文件,一个.c一个.h。没几行代码

出75入8汤圆

15
 楼主| 发表于 2023-9-14 17:10:02 | 只看该作者
三年模拟 发表于 2023-9-14 16:12
建议问chatgpt
(引用自12楼)

谢谢关注。

出75入8汤圆

16
 楼主| 发表于 2023-9-14 17:11:00 | 只看该作者
keshipt 发表于 2023-9-14 16:21
以下内容来之GPT3.5

LINUX串口 C语言如何开发
(引用自13楼)

谢谢,您太热心了,我看看。

出75入8汤圆

17
 楼主| 发表于 2023-9-14 17:11:23 | 只看该作者
爱晴海玩偶 发表于 2023-9-14 16:40
我直接找的源文件,一个.c一个.h。没几行代码
(引用自14楼)

好的,谢谢。

出0入8汤圆

18
发表于 2023-9-21 14:09:54 | 只看该作者
redworlf007 发表于 2023-9-14 15:43
用c的话我是在Linux虚拟机里面安装好交叉编译器,然后在虚拟机里面装好cmake,然后在Windows上用vscode远 ...
(引用自10楼)

go的话,哪款工具比较好

出0入36汤圆

19
发表于 2023-9-21 14:14:08 来自手机 | 只看该作者
justdomyself 发表于 2023-9-21 14:09
go的话,哪款工具比较好
(引用自18楼)

vscode上装上go插件开干。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-10-2 18:22

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表