Articles of 串行端口

在Linux中可以使用9位串行通信吗?

RS-232通信有时使用9位字节。 这可以用于在总线上与多个微控制器进行通信,其中8位是数据,附加位指示地址字节(而不是数据)。 不活动的控制器仅为地址字节生成中断。 Linux程序可以通过串行设备发送和接收9位字节吗? 怎么样?

如何使用Qextserialport在串行端口上写入

我正在使用Ubunt 10.10。 我想通过QT与一个微控制器(ATmega328p)进行通信,所以为了testing,我在微控制器上创build了一个虚拟应用程序,它从UART中读取字符,并在串行端口(回复)上以相同的字符响应,但在括号。 如果PC发送:a,则PC收到回复[a] 当我使用超级terminal(GtkTerm)从PC发送字符时,应用程序运行良好,但是当我使用QT时,它不起作用。 我正在从QT发送一个串口上的字符,我正在等待在超级terminal上收到回复,但是我没有收到任何回复。 串行通信属性:Baud9600,Parity_none,Stop_bits_1,Data_8bits,Flow_control_Off #include <QtCore/QCoreApplication> #include <qextserialport.h> int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); const char data[]= "e"; QextSerialPort * port = new QextSerialPort("/dev/ttyUSB0"); port->setBaudRate(BAUD9600); port->setFlowControl(FLOW_OFF); port->setParity(PAR_NONE); port->setDataBits(DATA_8); port->setStopBits(STOP_1); port->setTimeout(0); bool res = false; res = port->open(QIODevice::ReadWrite | QIODevice::Unbuffered); if(res) { qDebug("Opened"); qDebug(data); int i = port->write(data, sizeof(data)); } […]

使用Perl或PHP在Linux上通过USB读写串口设备

我在Linux上从串口设备读取问题。 这个问题很奇怪,我无法确定原因。 我打开PHP的/ dev / ttyUSB0文件,并开始根据设备的协议与设备进行通信。 很多时候我遇到了PHP脚本等待设备响应的情况。 当我并行运行一个Perl脚本,应该这样做,它发送一个请求到同一个设备,并退出应该没有得到一个响应,但后来我看到PHP脚本得到了回应(只有在Perl脚本发送请求后) 。 当我尝试用PHP读取Arduino时遇到了类似的问题,PHP没有得到端口的响应,但Arduino IDE的串行监视器打印了它。 我想我在这里错过了关于Linux文件和USB端口的一个关键的事情。 可能是什么问题? 我怎么知道哪个程序使用这个端口/文件? $usb = 'ttyUSB0'; `stty -F /dev/$usb 9600`; `stty -F /dev/$usb -parity`; `stty -F /dev/$usb cs8`; `stty -F /dev/$usb -cstopb`; $f = fopen("/dev/$usb", "r+"); if(!$f) { echo "error opening file\n"; exit; } statusRequest($f); sleep(1); $c = readPort($f); echo "$c\n"; function statusRequest($port) { […]

以编程方式与OS X或Linux中的串行端口通话

我有一个Prolite LED标志,我喜欢设置显示apache日志和其他有趣的统计滚动search查询。 问题是,我的G5没有串口,所以我必须使用USB串口encryption狗。 它显示为/dev/cu.usbserial和/dev/tty.usbserial。 当我这样做的时候,一切似乎都是h </s>的: stty -f /dev/cu.usbserial speed 9600 baud; lflags: -icanon -isig -iexten -echo iflags: -icrnl -ixon -ixany -imaxbel -brkint oflags: -opost -onlcr -oxtabs cflags: cs8 -parenb 当我使用串口工具与它交谈时,所有东西都可以工作。 如果我运行这段代码而上面提到的串口工具,everthing也可以。 但是,只要我断开连接工具,连接就会丢失。 #!/usr/bin/python import serial ser = serial.Serial('/dev/cu.usbserial', 9600, timeout=10) ser.write("<ID01><PA> \r\n") read_chars = ser.read(20) print read_chars ser.close() 所以问题是,在没有串口工具的情况下,需要执行什么样的磁贴才能开始与串口通话? 这是一个权限问题? 另外,/dev/cu.usbserial和/dev/tty.usbserial有什么区别? 不,没有序列号。 问题是,即使使用sudo运行python脚本,问题仍然存在,并且只有在我提到的gui工具中打开连接时,问题才会通过。

设置stty参数

我试图使用bash从ttyS0读取,需要设置以下,但即时通讯努力想出来 databits = 7 stopbits = 2 parity = 0 flow control = 0 inheritance人我的代码: #!/bin/bash # Port setting stty -F /dev/ttyS0 raw speed 1200 # Loop while [ 1 ]; do echo 'LOADING…' READ=`dd if=/dev/ttyS0 count=1` echo $READ echo '[PRESS Ctrl + C TO EXIT]' done 该脚本正在工作,但我需要设置参数。 有什么build议么? 谢谢:)

socat:通过TTY隧道IP

是否有可能获得一个双向IP隧道ttyS0类似串行(调制解调器)设备socat实用程序? 我试图使用TUN选项,但仍然无法得到结果。 任何build议都欢迎:) 更新: PC1: socat /dev/ttyUSB0,raw,echo=0,b57600,clocal TUN:192.168.1.1/24,up PC2: socat /dev/ttyUSB0,raw,echo=0,b57600,clocal TUN:192.168.1.2/24,up 之后,我看到tun0接口的两端都是正确的地址,但是我不能ping通其他的接口。 而不是,当我发送数据与ping -c 1 192.168.1.1远程socat进程退出,并且它的tun0设备销毁。 有什么build议么?.. UPDATE2: 当我们尝试通过仅使用socat的TCP / IP隧道串行时,会出现成帧问题。 社区开发者Gerhard Rieger对我说: 我担心你是对的。 通过数据报套接字工作,以及 – 运气 – 也通过pipe道。 但在串行线路上,数据包边界可能会消失,在tun接口上发送数据时,这是致命的。 我现在不能提供一个基于社会的解决scheme,对不起。 但是,我将尝试在一个更高版本的发行版中集成一些帧。

Linux上的低延迟串行通信

我正在通过Linux上的串行端口实施协议。 该协议基于请求应答scheme,因此吞吐量受限于将数据包发送到设备并获得答案的时间。 这些设备大部分是基于ARM的,运行Linux> = 3.0。 我遇到了麻烦,将往返时间减less到10ms以下(115200波特,8位数据位,无奇偶校验,每条消息7字节)。 什么IO接口将给我最低的延迟:手动select,轮询,epoll或轮询与ioctl? 阻塞或非阻塞IO影响延迟? 我试着用setserial设置low_latency标志。 但似乎没有效果。 还有什么我可以尝试减less延迟? 由于我控制所有设备,所以甚至可以修补内核,但是最好不要。 —-编辑—- 串行控制器使用的是一个16550A。

串行端口环回/双工testing,在Bash或C? (过程替代)

我有一个串行设备设置为回送(这意味着它只会回显它收到的任何字符),我想测量有效的吞吐速度。 为此,我希望可以利用time time bash -c '…' 哪里“ … ”将是我可以运行的一些命令。 现在,第一个问题是我想用2000000 bps的设备,所以我不能使用ttylog或屏幕 (他们似乎只能达到115200 bps)。 但是,使用/dev/ttyUSB0作为文件(使用文件redirect和cat )似乎工作正常: # initialize serial port stty 2000000 -ixon icanon </dev/ttyUSB0 # check settings stty -a -F /dev/ttyUSB0 # in one terminal – read from serial port while (true) do cat -A /dev/ttyUSB0 ; done # in other terminal – write to […]

在Windows批处理中获得串行COM端口描述

我想要像设备pipe理器显示的那样检索串行通信端口信息。 例如,“英特尔(R)主动pipe理技术 – SOL(COM3)”。 我知道使用命令“模式”来检索串口列表,但没有像“英特尔(R)主动pipe理技术 – SOL”的描述。 我如何在Windowsbatch file中获取这些信息?

如何使用batch file从COM端口读取数据?

是否有一个DOS / Batch命令可以用于从COM端口读取? 我试图寻找,但没有find解决办法。