首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何通过C++库在Unity上的串口上进行读写?

如何通过C++库在Unity上的串口上进行读写?
EN

Stack Overflow用户
提问于 2022-05-12 15:34:37
回答 1查看 390关注 0票数 4
  1. 问题介绍

我正在C++中开发一个库,允许我使用串行端口与通过USB读写连接的设备进行通信,但在Linux中,它工作得很好,但在Linux中,它能够与我需要在"/dev/tty*“文件中读写的设备通信,为此,我使用" open”函数打开相应的文件,如下所示:

代码语言:javascript
运行
复制
int fileId = open(fileAddress, O_RDWR);

但是,该函数返回-1,除非我使用以下命令将主用户包括在拨号组中:

代码语言:javascript
运行
复制
sudo adduser $USER dialout
  1. 单位中的问题

使用这种方法,我验证了在我的C++测试中一切都是完美的,但是当我试图将库包含在Unity中时,我意识到它再次失败了,因为它无法访问串行端口

由于我对通过C++进行的串口通信很感兴趣,因为它是一个跨平台的库,所以不能直接与C#进行通信。

  1. 解决方案调度

我还在为上述问题就像在这种情况下寻找一些可能的解决方案,但在尝试了一段时间之后,在调用以下命令时,我一直无法找到UnityHub:

代码语言:javascript
运行
复制
/usr/bin/flatpak run --branch=stable --arch=x86_64 --device=all --command=start-unityhub com.unity.UnityHub

它将我抛出以下错误:

代码语言:javascript
运行
复制
error: app/com.unity.UnityHub/x86_64/stable is not installed

尽管我在Ubuntu官方统一安装指南之后安装了它

我还尝试在远程平台存储库中添加统一,以便使用以下命令查看这是否是问题所在:

代码语言:javascript
运行
复制
flatpak remote-add UnityHub https://hub.unity3d.com/linux/repos/deb

但是它抛出了以下错误:

代码语言:javascript
运行
复制
error: GPG verification enabled, but no summary found (check that the configured URL in remote config is correct)
  1. 最终问题

总之,我的主要问题是,我应该做些什么来启用统一中的串行端口的读和写权限和/或解决这个问题的最佳方法?

编辑:

正如我在评论中所说的,我已经尝试将用户添加到拨号,但很明显,正如response 到这个职位中提到的那样,团结仍然无法访问带有上述配置的串行端口,我所做的一个解决方案就是对特定的tty文件应用chmod,问题是我必须手动地这样做,在进行统一构建时它是不实用的,运行应用程序的任何用户都必须手动查找相应的tty文件并将chmod应用到它,如果没有其他方法,那么至少有一些方法可以自动应用chmod或解决这个问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-05-22 00:07:51

我不太清楚问题出在哪里,但我会尽力帮忙的。

您链接到的Ubuntu官方统一安装指南不将Unity安装为平台。

这解释了为什么flatpak告诉您它没有安装。

您所链接的问题是描述平台的沙箱在访问串口时是如何影响到统一的。

除非您遵循与您所链接的内容不同的教程,否则这不应适用于您。

我认为您的问题是,在默认情况下,Ubuntu上的权限不是为串行端口访问设置的。没有“自动”方法来解决这个问题,因为它需要根权限才能更改。您可以做的是将"installer“shell脚本与您的程序捆绑在一起,并在需要更改权限时运行它。

命令行版本

代码语言:javascript
运行
复制
#!/bin/sh
sudo usermod -a -G dialout "$USER"

图形版本(弹出式询问密码)

代码语言:javascript
运行
复制
#!/bin/sh
pkexec usermod -a -G dialout "$USER"

这不是100%的可移植性,因为并不是所有的Linux发行版都使用dialout组(例如,Arch使用uucp),但是对于您在Ubuntu上的使用来说,它可能已经足够好了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72218432

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档