问题标签 [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.
android - 安卓USB主机通讯
我正在开发一个利用 Android 3.2 中的 USB 主机功能的项目。一般来说,我在 USB/串行通信方面缺乏知识和人才,这令人遗憾。我也找不到我需要做的任何好的示例代码。
我需要从 USB 通信设备读取数据。
例如:当我通过 Putty(在我的 PC 上)连接时,我输入:
设备开始为我输出数据。俯仰/滚动/温度/校验和。
前任:
我可以从 Android 设备发送初始的“GO”命令,此时我会收到“GO”的回声。
然后在任何后续阅读中都没有其他内容。
我该怎么做: 1) 发送“go”命令。2) 读入产生的数据流。
我正在使用的 USB 设备具有以下接口(端点)。
设备类:通信设备(0x2)
接口:
接口 #0 类:通信设备 (0x2) 端点 #0 方向:入站 (0x80) 类型:Intrrupt (0x3) 轮询间隔:255 最大数据包大小:32 属性:000000011
接口 #1 类:通信设备类 (CDC) (0xa) 端点 #0 地址:129 编号:1 方向:入站 (0x80) 类型:批量 (0x2) 轮询间隔 (0) 最大数据包大小:32 属性:000000010
端点 #1 地址:2 编号:2 方向:出站 (0x0) 类型:批量 (0x2) 轮询间隔 (0) 最大数据包大小:32 属性:000000010
我能够处理权限、连接到设备、找到正确的接口并分配端点。我只是无法确定使用哪种技术发送初始命令来读取随后的数据。我尝试了 bulkTransfer 和 controlTransfer 的不同组合,但没有成功。
谢谢。
我正在使用接口#1,如下所示:
serial-port - 如何使用rxtx在windows中测试串口通信?
我正在使用带有 Java 的RXTX连接到串行端口。但是现在我必须测试通信是否正常工作?这个怎么做。我是否需要调制解调器,或者我们可以在没有调制解调器的情况下在本地测试任何方式。
这是我要测试的程序http://rxtx.qbang.org/wiki/index.php/Two_way_communcation_with_the_serial_port
c# - 在 C# 中重新组装串行消息
我是 C# 和串行通信领域的新手。阅读了一些教程后,我设法使通信正常工作。我在这里问了另一个类似的问题,但我认为我问的问题不正确。我遵循了上一个问题中给出的建议并稍微更改了我的代码,以便我现在从我的微控制器发送一条看起来像这样的串行消息:
SxxxxxxxxxxxxxxxxxxxxxxxxE
x 代表不同的数字,加号和减号以及逗号。我发送的字符串将始终具有相同的长度,并且始终以 S 开头并以 E 结尾(如果这不好,我可以更改它)。我遇到的问题是,当我尝试读取串行线路时,我一次只能收到部分消息,所以是这样的:
我从微控制器连续发送此信息,但只想在特定时间访问它,所以换句话说,我正在尝试编写一个函数来接收消息的所有部分,将其放回一起,然后从我的功能。问题是我现在不知道该怎么做。
任何帮助将不胜感激!
这是我一直在玩的代码:
我曾经让消息的结尾是“*”
刚刚尝试按照这里的示例进行操作,这就是我从中得到的。
这就是我要发送的内容(使用 Putty 进行检查)
c# - 串口设备、命令、响应和 C#
我正在写我的硕士论文,我坚持编程串行端口设备通信。
我正在写光声扫描仪。允许创建热图像的应用程序。
我正在使用 USB 设备来控制更陡峭的电机,并使用 National Instruments 设备来获取信号。
我的应用程序正在控制两个步进电机(它应该控制)。
我有一个 USB 控制器来控制这些电机,它在系统中作为 COM 设备可见。我可以用超级终端和一个简单的应用程序来控制它,所以通信不是问题。
我在设备和我的应用程序之间建立双向通信时遇到问题。
我正在向设备发送字符串,如下所示:
serial.Write("CAL\r");
- 这会校准设备。但它可以返回两个响应——“CAL OK”或“BUSY”——校准正常或设备现在正在做其他事情。
我可以在串口上监听 DataRecived 事件,然后执行 string.equals。
我的应用程序必须控制电机并等待响应。
在一个简单的场景中:
- 开始申请
- 使用输入输入将被扫描的样本大小。
- 按下轮廓按钮 - 应用程序开始将电机首先移动到左上角,然后是右上角、右下角和左下角。(我可以发送简单的命令,但是如何发送一个,等待响应,然后发送另一个,然后在 GUI 上的第四个启用按钮之后?)
- 如果区域定义正确,请单击下一步并开始扫描。
- 电机移动到点 1,1(让我们这样称呼它)并开始信号采集。
- 处理收集的数据,然后我们转到点 1,2
- 整个区域已完成,用户收到扫描完成的消息。
我不知道如何从串行端口通信开始。如何实现双向通信。
我有一个简单的类(单例),它打开 com 端口、发送命令并在收到的每个数据上引发事件。
在我的班级中创建一个堆栈并在其上发送所有命令然后循环将它们发送到设备会是一个很好的解决方案吗?
但是如何在威胁中处理呢?做威胁睡眠,然后检查是否所有命令都被处理,如果没有,那么再次威胁睡眠?
我将不胜感激任何建议。
我正在编辑它以显示我希望我的应用程序的外观/工作方式
我有一个简单的应用程序,它有一个 TabControl(在应用程序中隐藏选项卡的修改版本,我只能在设计模式下看到它们)。
第一个选项卡有一些文本和信息(主要是统计数据)。其次允许收购。
用户单击第一个选项卡“Go to Acquisition”上的按钮,该选项卡显示,但所有按钮都被禁用。
他必须单击“打开校准”对话框。然后在该对话框中,他校准设备并输入所有采集参数(在该对话框中,他可以选择在将要测量的样本上进行轮廓移动电机到 4 个角)。校准完成后,他可以关闭该对话框,然后所有控件都在主窗体上处于活动状态。现在他可以点击“开始采集”按钮了。之后,较陡的电机将移动到特定位置(针对每个点计算),将获取该点的数据,处理,保存到文件并在 imagebox 中显示为像素。然后电机将移动到另一个点,并重复该过程直到样品结束。基本上我会扫描一个方形样本,将激光移动到特定点,收集数据并从中构建热图像,就像逐个像素地构建图像一样。
我将尝试用图表或屏幕截图来说明我的想法。
android - 如何使用Android蓝牙实现串口通信?
我已经浏览了 Android 文档中的 BluetoothChat 代码。但这似乎很难理解。我也找不到任何基于此的教程。
我想向蓝牙设备发送一个字符串。应用程序必须扫描设备并连接到所选设备以传递字符串。
请帮忙.. :(
iphone - 在 iPhone 中访问 /dev/tty.iap 被拒绝
我刚刚越狱并解锁了我的原始 iPhone(使用 ios 3.1.3)并尝试打开 /dev/tty.iap 以与我制作的设备通信并通过串行端口发送字符(例如)。(引脚 12 和 13)
但是当我尝试打开 /dev/tty.iap 时出现错误:“权限被拒绝”。
因此,我通过 Cdyia 在我的 iPhone 上安装了 OpenSSH,并通过 ssh 将 OpenSSH 安装到我的 iphone,我可以通过命令行(以 root 身份)打开和读取 tty.iap,但不能通过我的应用程序。所以我改变了 /dev/tty.iap (和疯狂的整个 /dev/ 文件夹!)的权限,chmod 777 tty.iap
甚至chmod -R 777 /dev/
但是当尝试像这样打开该文件时仍然出现“权限被拒绝”错误(我正在使用 xcode 4.2.1 进行编程):
我还能做些什么来获得适当的许可?
c# - C#在一个端口上与多个设备进行串行通信
我只是短暂地开始使用 C# 工作,我目前正在使用 RS-485 与其他一些设备进行通信,但我似乎无法真正让其他设备做出响应。我想知道是否有任何方法可以使用串行通信写入特定设备,因为它都是通过 COM 端口 4 连接的。我已经知道 serial.Write(); 但据我所知,它没有让您选择要发送到的地址。有没有人可能知道这个问题的答案?
最好的问候 CVR
感谢您的回复。他们帮了很多忙:)
java - RXTX 两路串行通信第一次运行后不发送数据
我从 RXTX 网站编辑了一个已经制作的示例。我也是 Java 和串行通信编程的新手。
该应用程序一次完美运行。它从 PIC 中读取缓冲区并发送我输入的数字。LED 亮起,PIC 发回相同的缓冲区,要求输入一个数字。但是当我输入它时,LED 熄灭,没有任何东西再次亮起,我再次收到要求输入数字的消息。
微控制器的软件没有任何问题,因为它与超级终端完美配合。
代码如下:
java - 应用程序不通过串口发送任何东西
基于 RXTX 网站的示例,我使用 GUI 构建了以下应用程序。唯一的问题是它实际上并没有向串行设备发送任何内容。我没有包含任何与 Swing GUI 相关的自动生成的代码。
bluetooth - Arduino 串行中断
我正在做一个 Arduino Mega 2560 项目。在 Windows 7 PC 上,我使用的是 Arduino1.0 IDE。我需要建立一个波特率为 115200 的串行蓝牙通信。当数据在 RX 可用时,我需要接收中断。我见过的每段代码都使用“轮询”,即在 Arduino 的循环中放置一个 Serial.available 条件。如何在 Arduino 循环中为中断及其服务程序替换这种方法?似乎 attachInterrupt() 没有提供此目的。我依靠中断将 Arduino 从睡眠模式唤醒。
我开发了这个简单的代码,它应该打开连接到引脚 13 的 LED。
问题是子程序永远不会被服务。