gpt4 book ai didi

c++ - 使用 Linux 与 Arduino 通信

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:36:56 25 4
gpt4 key购买 nike

这是我第一次使用计算机与 Arduino 通信。我使用 Ubuntu 14.04。这是用于写入文件的 C 程序。 Arduino 显示 ttyACM0。

使用 gcc 编译时,编译器显示错误信息:

Segmentation fault(core dumped)

我该如何纠正这个错误。

#include<unistd.h>
#include<stdio.h>
int main() {
char data[] = {'f','b','r'}; //Random data we want to send
FILE *file;
file = fopen("/dev/ttyACM0","w"); //Opening device file
int i = 0;
for(i = 0 ; i < 3 ; i++) {
fprintf(file,"%c",data[i]); //Writing to the file
fprintf(file,"%c",','); //To separate digits
sleep(1);
}
fclose(file);
}

原谅我的无知。我试着研究它。无法让它发挥作用。预先感谢您的帮助。

最佳答案

您从 fopen() 得到一个 NULL 返回,NULL 被传递给 fprintf() 需要一个有效的 FILE* 并弄乱导致 SEGV

如果您使用 fopen,您应该检查它返回的内容,以便为用户提供比“段错误”更有用的信息。

fopen() 失败的可能原因是您没有使用串口的权限。

通常你需要dialout组才能访问串口。

作为 root 执行:

usermod -a -G dialout你的用户名

然后注销并重新登录,这样您就可以获得新组。

考虑使用 minicom 或 microcom(在其他几个串行终端程序中的任何一个上)访问串行端口,而不是自己编写。

我还建议您让 Arduino 在启动时发送一条问候消息,这样您就可以确定您的波特率是否正确...

关于c++ - 使用 Linux 与 Arduino 通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27729979/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com