“COM”、“USB”、“串口”有什么区别?

我对这三个概念感到困惑。 我的理解是,Serial Port通常表示 RS-232 兼容端口(RS = 推荐标准)。USB代表Universal Serial Bus。Universal意思是? COM端口是什么意思? 添加1 从汉斯的回答中得到一些理解: 为了减少工作量,设备制造商通常使他们的设备也可以像串行端口设备一样工作。 添加2 一个很好的参考文档串行端口操作方法。 顺便说一句,Linux 文档项目真的很有用。 答案 Serial port是一种使用UART芯片的设备,即通用异步接收发送器。 COM来自MS-Dos,它是一个设备名称 。 LPT是并行端口的设备名称,是"Line Printer"的缩写。 RS-232是串行端口的电气信号标准。 USB指通用串行总线。 如今,串行端口仍然与 Windows 相关的唯一原因是 USB 设备需要自定义设备驱动程序。不是就像编写和支持驱动程序一样,他们经常在驱动程序中采用快捷方式,使其模拟传统的串行端口设备。 来自: stackoverflow.com

arduino com端口不起作用

我最近买了一个Arduino Uno。获得必要的电缆后,我决定将示例上传到芯片上。 我没有看到眨眼,而是收到一个错误processing.app.SerialException: Serial port 'COM1' not found. Did you select the right one from the Tools > Serial Port menu? 是的,我尝试了。但是,即使是串行端口显示器似乎也没有打开。再说一次,我得到了一些不值得一提的例外。 在发现我的串行com端口不起作用(通过portmon.exe)并弄清楚我什至没有任何(设备管理器中没有com端口),我也尝试下载驱动程序对于COM端口,但也失败了。 有人说这是因为我的Acer Aspire 5742的主板。有人说原因是Windows 7。 长话短说,如果有人可以帮助我解决我的com端口问题并修复我破裂的梦想,我将非常感谢。 答案 您安装了驱动程序吗?见arduino安装说明在#4下。我不知道那台机器,但我怀疑没有任何COM 端口。 来自: stackoverflow.com

C

我想读取我的串行端口,但只有当数据到来时(我不想轮询)。 我就是这样做的。 Schnittstelle = new SerialPort("COM3"); Schnittstelle.BaudRate = 115200; Schnittstelle.DataBits = 8; Schnittstelle.StopBits = StopBits.Two; .... 然后我开始一个线程 beginn = new Thread(readCom); beginn.Start(); 在我的 readCom 中,我正在连续阅读(轮询 :( ) private void readCom() { try { while (Schnittstelle.IsOpen) { Dispatcher.BeginInvoke(new Action(() => { ComWindow.txtbCom.Text = ComWindow.txtbCom.Text + Environment.NewLine + Schnittstelle.ReadExisting(); ComWindow.txtbCom.ScrollToEnd(); })); beginn.Join(10); } } catch (ThreadAbortException) { } catch (Exception ex) { System.Windows.Forms.MessageBox.Show(ex.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } } 我希望您在中断到来时阅读。 答案 您必须将 eventHandler 添加到 DataReceived 事件。...

C

有没有一种简单的方法可以以编程方式检查串行 COM 端口是否已打开/正在使用? 通常我会使用: try { // open port } catch (Exception ex) { // handle the exception } 但是,我想以编程方式进行检查,以便我可以尝试使用另一个 COM 端口或类似端口。 答案 我前段时间需要类似的东西来搜索设备。 我获得了可用 COM 端口的列表,然后简单地迭代它们,如果它没有抛出异常,我会尝试与设备进行通信。 var portNames = SerialPort.GetPortNames(); foreach(var port in portNames) { //Try for every portName and break on the first working } 来自: stackoverflow.com

C 中的串行端口 (RS -232) 连接

我已经使用 16 位编译器(我使用 Turbo C IDE)在 C 中完成了串行端口 RS-232 连接。bios.h其中包含从端口读取值所需的所有函数。bios.h. Are there any special header files available for this purpose in Mingw? I am using 32-bit compiler now because in my college project I got to use Exception handling which I guess is not supported in Turbo C. Please help me out. 答案 请看这里: 适用于 Linux 和 Windows 的 RS-232 ^1)^ Windows串口编程 ^2)^ 在 Visual C 中使用串行端口 ^3)^ 串行通信在Windows中 ^1)^ 您可以在 Windows(包括 MinGW)和 Linux 上使用它。...

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

DTR/DSR 和 RTS/CTS 硬件流控制有什么区别? 答案 DTR - 数据终端就绪 DSR - 数据集就绪 RTS-请求发送 CTS-清除发送 做事的方法有很多种,因为标准中从来没有内置任何协议。 仅从名称来看,RTS/CTS 似乎是天生的组合。 EDIT 要添加更多细节,它是一个两级层次结构,因此"正式"两者都必须发生才能进行通信。 DCE 是连接终端和电话网络之间的调制解调器。 调制解调器具有三种状态:断电、就绪(数据集准备就绪 是真的),并且连接(数据载体检测) 在连接调制解调器之前,终端无法执行任何操作。 当终端想要发送数据时,它会提高 RTS,调制解调器会通过 CTS 批准该请求。 太怀旧了! 来自: stackoverflow.com

Java/arduino-从串行端口读取数据

我在Java有一个程序,必须阅读Arduino发送的信息。我从这里。现在,我并不真正了解它的工作原理,但是我试图修改它,我得到了: import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.OutputStream; import gnu.io.CommPortIdentifier; import gnu.io.SerialPort; import gnu.io.SerialPortEvent; import gnu.io.SerialPortEventListener; import java.util.Enumeration; public class Serial implements SerialPortEventListener { SerialPort serialPort; private static final String PORT_NAMES[] = { "/dev/tty.usbserial-A9007UX1", // Mac OS X "/dev/ttyUSB0", // Linux "COM3", // Windows }; private BufferedReader input; private static OutputStream output; private static final int TIME_OUT = 2000; private static final int DATA_RATE = 115200; public void initialize() { CommPortIdentifier portId = null; Enumeration portEnum = CommPortIdentifier....

Linux 虚拟串口

我需要在Linux上测试一个串口应用程序,但是我的测试机只有一个串口。 有没有办法向 Linux 添加虚拟串行端口并通过 shell 或脚本模拟设备来测试我的应用程序? 注意:我无法重新映射端口,它在 ttys2 上硬编码,我需要在编写应用程序时对其进行测试。 答案 您可以使用一个企业(“pseudo-teletype”,一个串行端口是一个"真正的电传打字机")。/dev/ptyp5,然后将您的程序附加到/dev/ttyp5;ttyp5将像串行端口一样工作,但将通过 /dev/ptyp5 发送/接收它所做的一切。 如果你确实需要它来与一个名为/dev/ttys2,然后只需移动您的旧/dev/ttys2让开并创建一个符号链接ptyp5到ttys2。 当然,您可以使用除ptyp5。 维基百科有更多关于 ptys 的信息:http://en.wikipedia.org/wiki/Pseudo_terminal 来自: stackoverflow.com

Linux下C语言读写串口

我试图send/receive data over an USB Port using FTDI ,所以我需要使用 C/C 处理串行通信。Linux(乌班图)。 基本上,我连接到一个正在侦听传入命令的设备。ASCII characters。 使用 GtkTerm 一切正常,但是当我切换到 C 编程时,我遇到了问题。 这是我的代码: #include <stdio.h> // standard input / output functions #include <stdlib.h> #include <string.h> // string function definitions #include <unistd.h> // UNIX standard function definitions #include <fcntl.h> // File control definitions #include <errno.h> // Error number definitions #include <termios.h> // POSIX terminal control definitions /* Open File Descriptor */ int USB = open( "/dev/ttyUSB0", O_RDWR| O_NONBLOCK | O_NDELAY ); /* Error Handling */ if ( USB < 0 ) { cout << "Error " << errno << " opening " << "/dev/ttyUSB0" << ": " << strerror (errno) << endl; } /* *** Configure Port *** */ struct termios tty; memset (&tty, 0, sizeof tty); /* Error Handling */ if ( tcgetattr ( USB, &tty ) !...

Mac命令行——列出可用的串口?

在我的 Mac 上,我目前有可用的串行端口: /dev/tty.usbserial-A700dYoR /dev/cu.usbserial-A700dYoR /dev/tty.蓝牙-PDA-同步 /dev/cu.蓝牙-PDA-同步 /dev/tty.蓝牙调制解调器 /dev/cu.蓝牙调制解调器 是否可以从命令行(终端)检索计算机可用串行端口的列表? 答案 啊……比我容易多了。 ls /dev/tty.* ls /dev/cu.* 将列出 /dev/tty.usbserial-A700dYoR /dev/tty.蓝牙-PDA-同步 /dev/tty.蓝牙调制解调器 /dev/cu.usbserial-A700dYoR /dev/cu.蓝牙-PDA-同步 /dev/cu.蓝牙调制解调器 来自: stackoverflow.com

PHP串口数据从Arduino返回

我想知道是否有一种方法可以通过 PHP 读取我的串行端口 - 有效:-) 在练习 Arduino 技能时,我开发了一个简单的 LED 开/关草图。on 或者off在串行监视器中。 下一步,我整理了一个网页作为 GUI 界面,用于单击链接并执行上面的打开和关闭功能。PHP串口与我的 Arduino 使用的串行端口进行交互的类。 The issue is I need to find a way of getting feedback from the serial port. Using the Arduino IDE serial monitor, I can see my printed messages in response to each of my serial input and I need to retrieve the same feedback in my PHP code. PHP Serial 类提供了**readPort()**函数,但我不返回我的数据。 UPDATE[2]: 阿杜诺: const int greenPin = 2; const int bluePin = 3; const int redPin = 4; int currentPin = 0; //current pin to be faded int brightness = 0; //current brightness level void setup(){ Serial....

pyserial - 如何读取从串行设备发送的最后一行

我有一个 Arduino 连接到我的计算机,运行一个循环,每 100 毫秒通过串行端口将一个值发送回计算机。 我想制作一个Python脚本,每隔几秒从串行端口读取一次,所以我希望它只看到从Arduino发送的最后一个内容。 在 Pyserial 中如何做到这一点? 这是我尝试过的代码,但不起作用。 import serial import time ser = serial.Serial('com4',9600,timeout=1) while 1: time.sleep(10) print ser.readline() #How do I get the most recent line sent from the device? 答案 也许我误解了你的问题,但由于它是一条串行线,你必须依次读取从 Arduino 发送的所有内容 - 它将在 Arduino 中缓冲,直到你读取它。 如果您想要一个显示最新发送内容的状态显示 - 使用一个包含问题中的代码的线程(减去睡眠),并将最后一个完整行读取为 Arduino 的最新行。 Update: mtasic的示例代码相当不错,但是如果 Arduino 在发送时发送了部分行inWaiting()被调用,你会得到一个被截断的行。完全的 线入last_received,并将部分行保留在buffer以便可以将其附加到下一次循环中。 def receiving(ser): global last_received buffer_string = '' while True: buffer_string = buffer_string + ser.read(ser.inWaiting()) if '\n' in buffer_string: lines = buffer_string....

Python AttributeError:“模块”对象没有属性“序列”

我正在尝试在Raspberry Pi运行Debian上使用Python 2.6访问串行端口。我的脚本命名serial.py试图进口催眠: import serial ser = serial.Serial('/dev/ttyAMA0', 9600) ser.write("hello world!") 由于某种原因,它拒绝建立此错误的串行连接: AttributeError: 'module' object has no attribute 'Serial' 当我尝试在交互式Python解释器中键入相同的代码时,它仍然不起作用。 奇怪的是,它曾经在几个小时前工作。 可能是什么问题呢?我试图修复此操作一段时间,再次安装稿件,重写我的代码,仔细检查串行端口,等等。 答案 您正在导入模块,而不是类。因此,您必须写: from serial import Serial 您需要安装serial正确正确:pip install pyserial。 来自: stackoverflow.com

python 到 arduino 串口读取

我正在尝试在一些 python 代码和 arduino 代码之间来回"乒乓"信息。 现在我无法可靠地来回传递信息。 Python #!/usr/bin/python import serial import syslog import time #The following line is for serial over GPIO port = '/dev/ttyS0' ard = serial.Serial(port,9600,timeout=5) i = 0 while (i < 4): # Serial write section setTempCar1 = 63 setTempCar2 = 37 ard.flush() setTemp1 = str(setTempCar1) setTemp2 = str(setTempCar2) print ("Python value sent: ") print (setTemp1) ard.write(setTemp1) time.sleep(4) # Serial read section msg = ard.readline() print ("Message from arduino: ") print (msg) i = i + 1 else: print "Exiting" exit() 阿杜诺:...

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() 更新:既然我很讨厌我的同事发出哔哔声。我可以让它通过耳机的音频插孔吗? 答案 在Windows上,如果您只想使计算机发出哔哔声: import winsound frequency = 2500 # Set Frequency To 2500 Hertz duration = 1000 # Set Duration To 1000 ms == 1 second winsound.Beep(frequency, duration) 这winsound.Beep()可以在您想发生蜂鸣的任何地方使用。 来自: stackoverflow.com