问题标签 [serial-communication]
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.
iphone - iphone <-> 现实世界的连接
有关如何启动与 iphone 的串行通信的任何指示?或者任何其他与外部硬件交互的想法?
serial-port - 是否有任何处理串行端口通信的设计模式?
我们正在使用一些新的切割工具,它们可以通过串行端口而不只是控制面板来更改其硬件参数。
当硬件参数发生改变时,硬件将需要几秒钟来重新配置自身,然后发出信号表明它已准备好使用。
我们在此之前的设置涉及操作员单击切割板或零件命令。该软件将显示一个对话框,允许操作员更改与运动相关的任何内容(速度、延迟等),并显示硬件应采用的配置。操作员验证所有内容后,单击“确定”,机器开始切割。
对于新硬件,如果我们传输有更改,我们会提取当前配置,并弹出一个对话框,显示新配置是什么以及显示硬件是否准备就绪的指示器。并非所有事情都是通过串行端口自动完成的,因此有时对话框必须停留在那里,直到操作员单击“确定”。其他时候,当硬件发出正确信号时,它可以自行卸载。
我的问题(和疑问)是通过串行端口执行此操作非常缓慢。这也是我们第一次做这种类型的工作。我担心我错过了一些解决方案来使整个事情更具响应性。由于我们从第三方购买切割硬件,因此不能选择使用串行的替代品。
我想做的另一件事是可以选择显示状态对话框并让它继续运行,而不会让串行通信陷入系统的其余部分。
我正在寻找有关 Win32 API 或 .NET 的提示。
c - 如何在c程序中进行串行通信?
使用 vc++ 编译器如何访问串口。Bioscom() 函数可以在 Turbo C 中使用。
c# - 计算串行通信的块校验字符 (BCC)
我正在通过.NET 的 SerialPort 类通过串行与设备通信,并且根据第三方设备规范要求,我需要计算“块检查字符”。我被告知的唯一信息是它是异或运算 (XOR),必须对所有字符执行。
因此,如果我有字符串“Bob,001”,如何计算密件抄送?
.net - 侦听正在使用的串行 Com 端口
我正在处理一些使用 RS232 与外围设备通信的遗留系统。我对 COM 接口不是很有经验。我有一些可以打开和使用 COM 端口的代码,但它无法打开其他应用程序使用的端口。我需要对数据包进行黑盒处理,以便我们可以使用相同的协议进行更新的通信。
有没有办法将传入数据包“中间人”到打开的 COM 端口并检测正在发送的数据包?我正在使用 .NET,但我愿意接受任何类型的解决方案。
(我在那里发现了这个,但我认为这对我不起作用。)
windows-mobile - 读取 .NETCF SerialPort 的虚假 TimeoutException
编辑:是硬件问题.....获得重复的设备或电缆似乎可以解决问题。
您好,我正在努力从 .NETCF 中的串行端口读取大量数据(~1MB)。
我正在读取 GPS 数据转储,但在调用 m_serial.Read(..) 时随机收到 TimeoutException
串行端口上肯定有数据流 - 转储需要几分钟。当我得到超时时,我可以将串行电缆插入另一台计算机并稳定地看到数据流。
我尝试了几种不同的方法——SerialPort.Read、SerialPort.ReadLine、SerialPort.ReadExisting——它们都将读取一小段时间(随机量),然后因 TimeoutException 而失败。
任何帮助将不胜感激,谢谢!当肯定有可用数据以 38400 波特流传输时,我基本上不知道如何超时
更新:
我发现代码在 Motorola Symbol 设备上运行良好,但在我拥有的 intermec 设备上运行良好。我已经更换了所有硬件以尝试消除这种可能性,但它仍然无法正常工作。
两台设备都是 Windows Mobile 5.0
protocols - 串行协议中的错误检测/纠正/恢复
我需要为串行协议做一些设计,并且遇到了一些我认为必须在其他地方考虑过的问题。
所以我想知道是否有一些关于设计串行协议的最佳实践的建议。(请说明一个易于验证的事实,或者如果您提出索赔,请引用有信誉的来源。)也欢迎对网站/书籍的一般建议。
特别是我必须处理诸如
- 将字节流解析为数据包
- 验证数据包是否正确(例如,使用 CRC 很容易)
- 识别可能发生的合理错误类型(例如,在点对点串行流中,偶发的单比特错误和丢失的字节系列都是可能的,但不太可能出现额外的幻像字节;而在闪存中存储的记录或在磁盘驱动器上占主导地位的错误类型不同)
- 错误纠正或恢复(如果我检测到数据包中有错误,我可以纠正它吗?如果没有,我可以重新同步到下一个数据包的边界吗?)
- 如何使可变长度数据包对纠错/恢复具有鲁棒性。
有什么建议么?
serial-port - API/OS 支持“9 位”串行通信
java的javax.comm
库是否支持“9位”串行通信?(使用奇偶校验位或“地址位”作为帧信息的带外信令机制)
win32 通信 API 是否支持它?
我猜这两个方面的答案都是否定的,但我想有人比我有更多的经验。
.net - 我应该保持 SerialPort 连接打开吗?
我正在使用串行通信,我想知道是否应该保持 SerialPort 处于打开状态?
我正在创建一个命令队列,一次只能运行一个。我应该创建一个 SerialPort 并在每个命令中打开/关闭它,还是应该有另一个类来保持端口打开并从命令中调用?还是真的很重要?
.net-3.5 - 如何在串行端口上的写入之间强制执行 250 毫秒延迟?
我有一个使用 SerialPort 类与之通信的设备(数字指示器)。设备文档指出我需要在写入之间有 250 毫秒的延迟。有没有办法在不给系统带来额外延迟的情况下强制执行此操作?我知道这可能听起来像是我对非常小的事情太担心了,但是其中有三个指标,它经常阅读它们,但不是一直都在阅读它们。基本上,有没有一种好方法可以强制您在不到 250 毫秒内再次发送,但如果已经 5 秒并且我尝试发送,我不想无缘无故地再延迟 250 毫秒。
想法?