我对读取和写入串口有点困惑.我在Linux中有一个使用FTDI USB串行设备转换器驱动程序的USB设备.当我插入它时,它会创建:/ dev/ttyUSB1.
我认为在C中打开和读/写它很简单.我知道波特率和奇偶校验信息,但似乎没有标准吗?
我错过了什么,或者有人能指出我正确的方向吗?
我正在尝试使用运行Debian的Raspberry Pi上的Python 2.6访问串口.我的脚本命名serial.py尝试导入pySerial:
import serial
ser = serial.Serial('/dev/ttyAMA0', 9600)
ser.write("hello world!")
Run Code Online (Sandbox Code Playgroud)
由于某种原因,它拒绝与此错误建立串行连接:
AttributeError: 'module' object has no attribute 'Serial'
Run Code Online (Sandbox Code Playgroud)
当我尝试在交互式Python解释器中键入相同的代码时,它仍然无法正常工作.
奇怪的是,它曾经在几个小时前工作.
可能是什么问题呢?我试图修复一段时间,再次安装pySerial,重写我的代码,仔细检查串口等.
提前致谢!
我需要在Linux上测试串口应用程序,但是,我的测试机只有一个串口.
有没有办法向Linux添加虚拟串口并通过shell或脚本模拟设备来测试我的应用程序?
注意:我无法重新映射端口,它在ttys2上硬编码,我需要在编写时测试应用程序.
获取Linux系统上所有可用串行端口/设备列表的正确方法是什么?
换句话说,当我迭代所有设备时/dev/,如何以经典的方式判断哪些是串行端口,即那些通常支持波特率和RTS/CTS流控制?
解决方案将用C编码.
我问,因为我正在使用第三方库,这显然是错误的:它似乎只是迭代/dev/ttyS*.问题是,例如,USB上的串行端口(由USB-RS232适配器提供),并且这些端口列在/ dev/ttyUSB*下.在Linux.org上阅读Serial-HOWTO,我认为随着时间的推移,还会有其他名称空间.
所以我需要找到检测串行设备的官方方法.问题是似乎没有记录,或者我找不到它.
我想有一种方法是打开所有文件/dev/tty*并调用特定的文件,这些文件ioctl()仅在串行设备上可用.那会是一个很好的解决方案吗?
hrickards建议查看"setserial"的来源.它的代码完全符合我的想法:
首先,它打开一个设备:
fd = open (path, O_RDWR | O_NONBLOCK)
Run Code Online (Sandbox Code Playgroud)
然后它调用:
ioctl (fd, TIOCGSERIAL, &serinfo)
Run Code Online (Sandbox Code Playgroud)
如果该调用没有返回错误,那么它显然是一个串行设备.
我在Serial Programming/termios中找到了类似的代码,建议也添加该O_NOCTTY选项.
但是,这种方法存在一个问题:
当我在BSD Unix(即Mac OS X)上测试此代码时,它也能正常工作.但是,通过蓝牙提供的串行设备会导致系统(驱动程序)尝试连接到蓝牙设备,这需要一段时间才能返回超时错误.这是因为只需打开设备即可.我可以想象在Linux上也会发生类似的事情 - 理想情况下,我不需要打开设备来弄清楚它的类型.我想知道是否还有一种方法可以在ioctl没有打开的情况下调用函数,或者以不会导致连接的方式打开设备?
我该怎么办?
目前我正试图在我的Nexus 7(2012)上使用Android 4.3(Build JWR66Y,我猜第二次4.3更新)打开BluetoothSocket时遇到一个奇怪的异常.我已经看到了一些相关的帖子(例如/sf/ask/955386141/),但似乎没有提供此问题的解决方法.此外,正如在这些线程中所建议的那样,重新配对没有帮助,并且不断尝试连接(通过愚蠢的循环)也没有任何效果.
我正在处理嵌入式设备(noname OBD-II车载适配器,类似于http://images04.olx.com/ui/15/53/76/1316534072_254254776_2-OBD-II-BLUTOOTH-ADAPTERSCLEAR-CHECK-ENGINE-灯光与你的电话-Oceanside.jpg).我的Android 2.3.7手机连接没有任何问题,同事的Xperia(Android 4.1.2)也可以使用.另一个Google Nexus(我不知道'One'或'S',但不是'4')也因Android 4.3而失败.
这是连接建立的片段.它在自己的Thread中运行,在Service中创建.
private class ConnectThread extends Thread {
private static final UUID EMBEDDED_BOARD_SPP = UUID
.fromString("00001101-0000-1000-8000-00805F9B34FB");
private BluetoothAdapter adapter;
private boolean secure;
private BluetoothDevice device;
private List<UUID> uuidCandidates;
private int candidate;
protected boolean started;
public ConnectThread(BluetoothDevice device, boolean secure) {
logger.info("initiliasing connection to device "+device.getName() +" / "+ device.getAddress());
adapter = BluetoothAdapter.getDefaultAdapter();
this.secure = secure;
this.device = device;
setName("BluetoothConnectThread");
if (!startQueryingForUUIDs()) {
this.uuidCandidates = Collections.singletonList(EMBEDDED_BOARD_SPP);
this.start();
} …Run Code Online (Sandbox Code Playgroud) 每个串行设备显示两次/dev,一次为a tty.*,一次为a cu.*.
什么是cu.*设备?它与tty.*设备有何不同?
mh@maru ~ --> ls -l /dev/*.usbmodem621
crw-rw-rw- 1 root wheel 11, 5 Dec 25 18:00 /dev/cu.usbmodem621
crw-rw-rw- 1 root wheel 11, 4 Dec 25 18:00 /dev/tty.usbmodem621
Run Code Online (Sandbox Code Playgroud) 我正试图让程序给我一个哔哔声.我在一台Windows机器上.我看过http://docs.python.org/library/winsound.html
但不知道如何使用条形码扫描仪对其进行编程.
这是我的串行条形码扫描器的代码.
ser = serial.Serial()
ser.baudrate = 9600
#for windows
ser.port = 2 #for COM3
ser.open()
ser.write('hello')
ser.close()
Run Code Online (Sandbox Code Playgroud)
更新:因为我用哔哔声扰乱了我的同事.我可以通过耳机的音频插孔来获取它吗?
我正在开发一个项目,其中有许多硬件传感器通过RS232串口连接到部署机器.
但是......我正在开发一台没有物理RS232串口的机器,但是我想制作一些可以连接的假串口,并输出数据,目的是伪造硬件传感器的输入.
有谁知道在Windows XP上创建假串口并控制它的方法?
windows serial-port virtual-serial-port mocking hardware-interface
DTR/DSR和RTS/CTS硬件流控制有什么区别?什么时候使用?为什么我们需要不止一种硬件流控制?:)
我正在尝试将minicom连接到通过USB转串口适配器连接的串行设备.这是一个PL2303,从我读过的所有内容中都不需要额外的驱动程序.该设备被识别为PL2303.
我是minicom的初学者.这是执行的正确命令吗?或者我需要配置什么?
$ sudo minicom --device /dev/ttyUSB0
minicom: cannot open /dev/ttyUSB0: No such file or directory
$ sudo lsusb -v
Bus 002 Device 006: ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port
Device Descriptor:
bLength 18
bDescriptorType 1
$ tail /var/log/syslog #then removed and attached the device.
Mar 13 23:31:49 ubuntu kernel: [807996.786805] usb 2-1: pl2303 converter now attached to ttyUSB0
Mar 13 23:34:44 ubuntu kernel: [808172.155129] usb 2-1: USB disconnect, address 7
Mar 13 23:34:44 ubuntu kernel: [808172.156321] pl2303 …Run Code Online (Sandbox Code Playgroud)