ZHAOBAO511 发表于 2023-9-14 14:35:28

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

请教朋友们,LINUX串口数据发送接收开发流程是?以前用QT,UCLNUX用C语言,现在客户是LINUX系统,不让用QT,只能用C,请问怎么去实现?谢谢。

爱晴海玩偶 发表于 2023-9-14 14:48:40

有C的例程。直接能用

jenkins 发表于 2023-9-14 15:06:59

可以使用libserialport或者CSerialPort

hameyou 发表于 2023-9-14 15:24:00

打开一个串口设备就可以读写访问了{:lol:}

ZHAOBAO511 发表于 2023-9-14 15:26:17

爱晴海玩偶 发表于 2023-9-14 14:48
有C的例程。直接能用
(引用自2楼)

谢谢,应该有库吧。

redworlf007 发表于 2023-9-14 15:26:37

c语言直接搞呀,或者go

ZHAOBAO511 发表于 2023-9-14 15:26:46

jenkins 发表于 2023-9-14 15:06
可以使用libserialport或者CSerialPort
(引用自3楼)

谢谢,这个是库吧

ZHAOBAO511 发表于 2023-9-14 15:27:49

hameyou 发表于 2023-9-14 15:24
打开一个串口设备就可以读写访问了
(引用自4楼)

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

ZHAOBAO511 发表于 2023-9-14 15:28:37

redworlf007 发表于 2023-9-14 15:26
c语言直接搞呀,或者go
(引用自6楼)

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

redworlf007 发表于 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上跑就好了。


ZHAOBAO511 发表于 2023-9-14 15:50:08

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

谢谢,我看看。

三年模拟 发表于 2023-9-14 16:12:08

建议问chatgpt

keshipt 发表于 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;
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代码编译成可执行文件,并开始运行和测试你的程序。

爱晴海玩偶 发表于 2023-9-14 16:40:56

ZHAOBAO511 发表于 2023-9-14 15:26
谢谢,应该有库吧。
(引用自5楼)

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

ZHAOBAO511 发表于 2023-9-14 17:10:02

三年模拟 发表于 2023-9-14 16:12
建议问chatgpt
(引用自12楼)

谢谢关注。

ZHAOBAO511 发表于 2023-9-14 17:11:00

keshipt 发表于 2023-9-14 16:21
以下内容来之GPT3.5

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

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

ZHAOBAO511 发表于 2023-9-14 17:11:23

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

好的,谢谢。

justdomyself 发表于 2023-9-21 14:09:54

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

go的话,哪款工具比较好

redworlf007 发表于 2023-9-21 14:14:08

justdomyself 发表于 2023-9-21 14:09
go的话,哪款工具比较好
(引用自18楼)

vscode上装上go插件开干。
页: [1]
查看完整版本: 请教朋友们,关于LINUX串口开发的一个问题: