问题标签 [serial-port]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 以编程方式与 OS X 或 Linux 中的串行端口通信
我有一个 Prolite LED 标志,我喜欢设置它来显示来自 apache 日志和其他有趣统计数据的滚动搜索查询。问题是,我的 G5 没有串口,所以我必须使用 USB 转串口加密狗。它显示为 /dev/cu.usbserial 和 /dev/tty.usbserial 。
当我这样做时,一切似乎都是笨拙的:
当我使用串口工具与之交谈时,一切也都有效。
如果我在上面提到的串口工具的同时运行这段代码,那么一切都可以。但是,一旦我断开该工具,连接就会丢失。
所以问题是,我需要执行什么魔法才能在没有串口工具的情况下开始与串口通信?这是权限问题吗?另外,/dev/cu.usbserial 和 /dev/tty.usbserial 有什么区别?
不,没有序列号。问题是,即使使用 sudo 运行 python 脚本,问题仍然存在,并且如果我在我提到的 gui 工具中打开连接,唯一可以让它通过的事情。
linux - `/dev/ttyS0` 和 `/dev/ttys0` 之间的区别?
/dev/ttyS0
在 Linux 中,和 和有什么区别/dev/ttys0
?
我知道第一个是串行端口,但是第二个s
呢?
vb.net - 如何确定哪个进程正在使用串行端口?
我工作的公司制造通过串行端口与计算机通信的硬件。第三方公司编写与我们的硬件通信的软件。
有时我需要诊断我们的硬件。但是,当 Windows 启动时,第三方软件应用程序会连接到串行端口,从而阻止任何其他连接。我不知道这个应用程序/服务的名称,而且它并不总是同一个。
有没有办法:
- 查找当前正在使用给定串行端口的应用程序/服务的名称/pid 或
- 从另一个应用程序窃取串行端口连接。
最好是 vb.net,但我也会采用与语言无关的答案。
compact-framework - 通过串行端口传输数据
我正在使用 Compact Framework 中的 SerialPort 类,但我无法接收超过 2047 个字节。我可以接收的字节数是否存在任何限制?或如何设置对象?我正在尝试使用 WriteBufferSize 和 ReadBufferSize 属性,但它们不起作用。
linux - Linux 的虚拟串行端口
我需要在 Linux 上测试一个串口应用程序,但是,我的测试机只有一个串口。
有没有办法将虚拟串行端口添加到 Linux 并通过 shell 或脚本模拟设备来测试我的应用程序?
注意:我无法重新映射端口,它在 ttys2 上硬编码,我需要在编写应用程序时对其进行测试。
linux - 让两个 Linux(虚拟)机器通过串行端口进行通信
设置一个 Linux 机器在其串行端口上侦听传入连接的最佳方法是什么?我已经做了很多谷歌搜索,但我找不到正确的命令组合来真正让他们说话!
我的主要目标是为运行的 kvm/qemu VM 实例提供串行接口。他们目前只有一个 VNC 接口(他们在无头服务器上,没有 X)。我可以通过使用 -serial file: 标志启动 VM 来创建串行设备,但如何与它对话则是另一个问题。两个盒子都运行 Ubuntu 8.04。
.net - 什么会影响 Serialport.Read() 返回的值
我使用 .Net Framework 2.0 Serialport 类在 C# 2.0 中编写了一个简单的应用程序,以通过 COM1 与控制器卡进行通信。
最近发生了一个问题,Read 方法返回的字节不正确。它返回了正确数量的字节,只有值不正确。不过,用 Delphi 编写的类似应用程序仍然返回正确的值。
我使用Portmon记录两个应用程序的串行端口上的活动,比较了两个日志,并在其中一些(显然)较小的不同设置,我试图尽可能地模仿 Delphi 应用程序,但无济于事。
那么,什么会影响 Read 方法返回的字节值呢?
两个应用程序之间的大多数设置是相同的。
以下是 Portmon 日志中不同的行的列表:
德尔福应用程序:
IOCTL_SERIAL_SET_CHAR Serial0 SUCCESS EOF:dc ERR:0 BRK:0 EVT:0 XON:11 XOFF:13
IOCTL_SERIAL_SET_HANDFLOW Serial0 SUCCESS Shake:0 Replace:0 XonLimit:256 XoffLimit:256 IOCTL_SERIAL_SET_TIMEOUTS Serial0 SUCCESS RI:-1 RM:100 RC:1000 WM :100 WC:1000 IOCTL_SERIAL_SET_WAIT_MASK Serial0 成功掩码:RXCHAR RXFLAG TXEMPTY CTS DSR RLSD BRK ERR RING RX80FULL
C# 应用程序:
IOCTL_SERIAL_SET_CHAR Serial0 SUCCESS EOF:1a ERR:0 BRK:0 EVT:1a XON:11 XOFF:13 IOCTL_SERIAL_SET_HANDFLOW Serial0 SUCCESS Shake:0 Replace:0 XonLimit:1024 XoffLimit:1024 IOCTL_SERIAL_SET_TIMEOUTS Serial0 SUCCESS RI:-1 RM:-1 RC:1000 WM:0 WC:1000 IOCTL_SERIAL_SET_WAIT_MASK Serial0 SUCCESS 掩码:RXCHAR RXFLAG CTS DSR RLSD BRK ERR RING
更新:
正确返回的字节为:91、1、1、3、48、48、50、69、66、51、70、55、52、93(14 个字节)。最后一个值是一个简单的校验和。
返回的错误值为:91、241、254、252、242、146、42、201、51、70、55、52、93(13 个字节)。
如您所见,返回的第一个和最后五个字节是对应的。
ErrorReceived 事件表明发生了帧错误,这可以解释不正确的值。但问题是为什么 SerialPort 会遇到框架错误,而 Delphi 应用程序显然没有?
windows - 如何以编程方式将 COM51 等名称关联到 Microsoft Windows 中的物理串行端口?
如何以编程方式将 COM51 等名称关联到 Microsoft Windows 中的物理串行端口?
要手动执行操作,我可以按照
链接文本中描述的步骤进行操作
使用 devmgmt.msc 打开设备管理器
双击端口(COM 和 LPT)。
右键单击我想要的端口,然后单击“属性”。
在端口设置选项卡上,如果我想更改 COM 端口号(例如,从 COM1 到 COM51),我单击高级按钮,然后从列表中选择我需要的 COM 端口号。
但是,我怎样才能用程序来完成这项工作呢?是否有 API 来完成这项工作?谢谢你。
serial-port - 强大且易于实现的串行总线(汽车应用)
如果您的主要选择标准是:您将在汽车嵌入式系统中使用哪种串行通信总线:
- 电气坚固
- 慢速 (32 kb/s)
- 易于编程
- 易于与微控制器接口
它不会传输太多数据,但需要以高速(100 - 500 Hz)定期传输。我发现如果你的地线有噪音,RS-232 就不够可靠。CAN-bus 看起来很有趣,但我没有这方面的经验。
我们目前对 AVR AT90CAN128 微控制器的组合感兴趣。