标签: serial-port

如何从C中的串口打开,读取和写入?

我对读取和写入串口有点困惑.我在Linux中有一个使用FTDI USB串行设备转换器驱动程序的USB设备.当我插入它时,它会创建:/ dev/ttyUSB1.

我认为在C中打开和读/写它很简单.我知道波特率和奇偶校验信息,但似乎没有标准吗?

我错过了什么,或者有人能指出我正确的方向吗?

c linux serial-port

129
推荐指数
2
解决办法
37万
查看次数

Python AttributeError:'module'对象没有属性'Serial'

我正在尝试使用运行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,重写我的代码,仔细检查串口等.

提前致谢!

python serial-port raspberry-pi

112
推荐指数
5
解决办法
33万
查看次数

Linux的虚拟串行端口

我需要在Linux上测试串口应用程序,但是,我的测试机只有一个串口.

有没有办法向Linux添加虚拟串口并通过shell或脚本模拟设备来测试我的应用程序?

注意:我无法重新映射端口,它在ttys2上硬编码,我需要在编写时测试应用程序.

linux serial-port virtual-serial-port

111
推荐指数
9
解决办法
15万
查看次数

如何在Linux上找到所有串口设备(ttyS,ttyUSB,..)而不打开它们?

获取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没有打开的情况下调用函数,或者以不会导致连接的方式打开设备?

我该怎么办?

linux serial-port

104
推荐指数
8
解决办法
36万
查看次数

IOException:读取失败,套接字可能关闭 - Android 4.3上的蓝牙

目前我正试图在我的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)

android serial-port bluetooth android-4.3-jelly-bean

95
推荐指数
8
解决办法
12万
查看次数

MacOS:/dev/tty.*和/dev/cu.*之间有什么区别?

每个串行设备显示两次/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)

macos serial-port tty

81
推荐指数
1
解决办法
4万
查看次数

Python:发出哔哔声

我正试图让程序给我一个哔哔声.我在一台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)

更新:因为我用哔哔声扰乱了我的同事.我可以通过耳机的音频插孔来获取它吗?

python audio serial-port

78
推荐指数
10
解决办法
15万
查看次数

伪造RS232串口

我正在开发一个项目,其中有许多硬件传感器通过RS232串口连接到部署机器.

但是......我正在开发一台没有物理RS232串口的机器,但是我想制作一些可以连接的假串口,并输出数据,目的是伪造硬件传感器的输入.

有谁知道在Windows XP上创建假串口并控制它的方法?

windows serial-port virtual-serial-port mocking hardware-interface

76
推荐指数
4
解决办法
11万
查看次数

DTR/DSR和RTS/CTS流量控制有什么区别?

DTR/DSR和RTS/CTS硬件流控制有什么区别?什么时候使用?为什么我们需要不止一种硬件流控制?:)

serial-port protocols

72
推荐指数
2
解决办法
13万
查看次数

如何在Ubuntu 10.10(Maverick Meerkat)上将终端连接到串口转USB设备?

我正在尝试将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)

linux usb serial-port hardware-interface

62
推荐指数
5
解决办法
51万
查看次数