繁体   English   中英

UBUNTU C的USB到串行通信问题

[英]USB to Serial communication problems for UBUNTU C

我正在尝试从Odroid-U2上的C ++代码控制伺服器。 我使用USB串行线将LynxMotion的SSC-32伺服驱动器连接到Odroid。

简单的串行命令控制伺服器,例如“ #n Puuu”,后跟回车,其中n =伺服器的针脚编号,uuu =脉冲宽度。 使用来自Odroid的PUTTY时,我可以很好地控制伺服器,但是使用C ++代码控制伺服器时遇到问题。 例如,在我的代码中,我执行以下操作:

fstream f;
f.open("/dev/ttyUSB0");
f << "#0 P600\r";
f.close();

一次,我能够运行此代码,并且它适当地摆动了伺服系统,但是现在当我尝试运行此代码时,终端卡住并挂起。 我将问题缩小到f.open(“ / dev / ttyUSB0”)行,这阻止了代码运行。 我假设我需要以某种方式配置USB端口。 我知道我需要115200的波特率,并进行了相应的设置,但是我有点像Ubuntu n00b,所以我不确定我还需要其他哪些类型的配置。

我的Linux版本是Linaro 12.11。

当我键入stty时,非默认配置设置似乎是:

speed 115200 baud; line = 0;
-brkint ixoff -imaxbel
-iexten

您不能依赖串行端口的默认设置(并且不应尝试使用stty在程序外部进行设置)。 您必须将代码写入程序以正确设置串行端口。 为此,您必须使用tcsetattr / tcgetattr,cfsetspeed等功能,请参见man termios。

另外,fstream可能不提供对使用的适当open()函数参数的访问,因为在UNIX上打开串行端口应使用O_NOCTTY标志来完成。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM