串行端口是一个物理接口,通过该接口一次一位地传输数据(单向或双向)。该术语通常指的是带有9针d-sub连接器的RS-232端口,该连接器曾经是PC上的标准串行接口。
使用 ioctl 读取 USB 失败,因为“值对于定义的数据类型来说太大”
我正在尝试使用ioctl和USBDEVFS_BULK(在Android上本机)读取USB。我使用的 USB 电缆包含一个 FTDI 芯片,并从 Arduino UNO 发送数据,该 Arduino UNO 写入串行。
我一直在尝试与Arduino Nano(实际上是一个便宜的中文版本)建立通信。 主板每秒发送 3 个字符,我只收到最后 2 个字符 我找到了这个文件...
QT - 使用 QSerialPort(ASCII 命令)写入和读取
我正在通过QT制作一个程序。需要PC机与串口之间进行通信。 所以我连接了串口,但我不知道如何写入和读取。 该文件说“接口(串行...
与 Thorlabs KDC101 控制器的串行端口通信(APT 协议)无法工作
我正在尝试使用 Linux 上的 Qt 和 Thorlabs APT 通信协议通过串行端口连接与我的 Thorlabs KDC101 控制器进行通信。我可以打开 COM 端口并写入
使用 Electron-builder 时出现错误“@serialport ...不是 Win32 应用程序”
我有一个应用程序,应该从外部秤读取串行输入,为此我制作了一个电子应用程序。 我尝试寻找修复程序,但找不到适合我需要的修复程序,或者它们不起作用...... 我
如何向javax.comm添加“驱动程序”? Java 串口编程
我正在尝试使用我的 PC 上的 RS-232 串行端口和 javax.comm 类。我是该 API 的新手,所以首先我浏览了文档,我发现您应该做的第一件事是......
在 Windows 计算机上动态加载程序集时“System.IO.Ports 目前仅在 Windows 上受支持”
控制台应用程序动态加载包含引用 System.IO.Ports 的类的程序集。 应用程序和类库都以 net8.0-windows 为目标。 我收到异常 System.IO.P...
我正在尝试使用 SerialPort 从 Arduino 向 NodeJS 发送消息。这是我的 NodeJS 代码: var SerialPort = require('串口'); var port = new SerialPort('/dev/tty.usbmodem1421',{ 波特率...
为什么多个相同的函数调用在Arduino上的执行时间有显着差异?
我在Arduino上编写了我的Adf类的成员函数bool Adf::sendAndReceive(char *data, uint8_t length),它通过Adf::pSerial指向的串行端口发送一个char数组,然后重新.. .
自从过去两天以来我一直在努力解决这个问题。真的很想得到任何指点。 Summery:我正在通过串行连接到系统。我可以用腻子让它做任何我想做的事。对于任何命令我...
TypeError:serialport.parsers.readline不是函数错误
嗨,我是 NodeJs 的新手。我遇到了以下代码中的 TypeError: serialport.parsers.readline is not a function 错误。 var webSocketUrl = "wss://api.artik.cloud/v1.1/websocket?ack=true&...
我尝试在 LX2160ARDB 板上运行 Linux 的 SoC 上的用户应用程序中使用 UART 串行端口。 有 2 个使用 PL011 UART 硬件的 UART 端口(UART1、UART2)。 Linux 启动后,我可以找到
我正在尝试使用以下脚本从使用 PHP 发送到 RS485 设备的命令中获取响应: 我正在尝试使用以下脚本从我使用 PHP 发送到 RS485 设备的命令中获取响应: <?php class rapidserial{ function _blocking($device,$mode){ stream_set_blocking($device, $mode); return true; } } $rapidserial = new rapidserial(); $device = "COM3"; shell_exec("mode $device BAUD=9600 PARITY=n DATA=8 STOP=2 xon=off octs=off rts=off"); $comport = fopen($device, "r+b"); if ($comport === false) { die("Failed opening com port<br/>"); } else { echo "Com Port Open<br/>"; } //Set non-blocking mode for writing $rapidserial->_blocking($comport,0); $atcmd = "\x0A\x04\x00\x00\x00\x49\x30\x87"; // fputs($comport, $atcmd); usleep(2000); // Set blocking mode for reading $rapidserial->_blocking($comport,1); echo 'Response:'; $res = fgets($comport, 4017); var_dump ($res); fclose($comport); ?> 这取自我在这里发表的相关帖子:https://superuser.com/questions/1815811/issue-addressing-modbus-via-rs485-and-php-on-windows在那里我被帮助发送了命令,帮助我的人提供的脚本有效。现在我尝试发送命令并获取响应,但它不起作用,响应为空。 我也尝试过使用https://github.com/toggio/PhpSerialModbus但它告诉我“无法打开设备”。 我知道我可以与设备通信,因为如果我使用某些 modbus 软件,我可以发送命令并获取响应。 更新:所以我已经从 Windows 设备转移到 Linux 设备来执行此操作,现在我在 PHP 中使用不同的 modbus 类取得了一些成功(https://github.com/toggio/PhpSerialModbus),但是问题是我没有收到所有返回的数据,它似乎被截断了,即使我尝试进一步请求寄存器(不是从零开始),我也没有收到我期望的所有数据。我知道它在那里,因为如果我使用如图所示的 modbus 软件,我可以看到它。 我的代码现在看起来像这样: <?php include("/var/www/html/PhpSerialModbus.php"); $modbus = new PhpSerialModbus(); $modbus->deviceInit('/dev/ttyUSB0',9600,'none',8,2,'none'); $modbus->deviceOpen(); $modbus->debug = false; $rawquery="\x0A\x04\x00\x00\x00\x49\x30\x87"; $modbus->sendRawQuery($rawquery.$modbus->crc16($rawquery),false); $result=$modbus->getResponse(true); function hex2float($strHex) { $hex = sscanf($strHex, "%02x%02x%02x%02x%02x%02x%02x%02x"); $bin = implode('', array_map('chr', $hex)); $array = unpack("Gnum", $bin); return $array['num']; } $bin_result = bin2hex($result); $bin_result = chunk_split($bin_result, 2, ','); $bin_result = substr($bin_result, 9); $myresults = print_r($bin_result, true); $final_array = explode(",", $myresults); print_r ($final_array); ?> 这给了我这个: [0] => 42 [1] => 48 [2] => 33 [3] => 33 [4] => 43 [5] => d3 [6] => 92 [7] => 00 [8] => 43 [9] => 75 [10] => 54 [11] => 86 [12] => 40 [13] => 66 [14] => 66 [15] => 72 [16] => be [17] => dc [18] => 7a [19] => de [20] => 44 [21] => 5c [22] => f0 [23] => 0a [24] => 44 [25] => 34 [26] => 50 [27] => 09 [28] => 42 [29] => f2 [30] => cc [31] => cd [32] => be [33] => f9 [34] => db [35] => 24 [36] => 40 [37] => 25 [38] => c2 [39] => 8f [40] => 42 [41] => 06 [42] => cc [43] => cd [44] => 42 [45] => 90 [46] => 00 [47] => 07 [48] => 42 [49] => ef [50] => 99 [51] => 9a [52] => 43 [53] => d3 [54] => 51 [55] => 65 [56] => 43 [57] => 73 [58] => c2 [59] => 9b [60] => 40 [61] => 80 [62] => PhpSerialModbus.php执行的读取循环是: while( ($byte = $this->serial->ReadPort()) && ((microtime(true)-$startTime)<3.0)) { $responseString=$responseString.$byte; usleep(50); } 它有问题:它只等待 50 微秒,这太短了。没有额外的数据 足够的时间到达并且循环提前终止。也许开发者的意思是 50 毫秒, 所以你可以像这样改变它: usleep(50000); 如果您不想更改 PhpSerialModbus.php,您可以在代码中执行以下操作: $result = $modbus->getResponse(true); do { usleep(50000); $data = $modbus->getResponse(true); $result .= $data; } while($data);
我在 python 脚本中成功读入并打印了一些串行端口数据。 我在使用什么工具/功能将串行端口数据更改为表格或连续数据时遇到困难...
Linux TTY 驱动程序等待接收 1024 字节,我需要无缓冲 [已关闭]
我正在寻找一个命令来监视串行终端端口,以十六进制转储未缓冲的数据。数据不是面向行的。 我试过: socat -b 1 -v -x /dev/ttymxc2,cfmakeraw - | socat -b 1 -v -x /dev/ttymxc2,cfmakeraw - |猫 >/dev/nul...
我正在通过串行方式使用 C++ 和 Arduino 通信。 我能够写入字节,但我注意到当我设置 DCB 设置并使用 SetCommState(m_hComm, &m_dcb) 时,它会写入三个字节...
socat -v 等待接收到 1024 字节,我需要无缓冲显示
我正在寻找一个命令来监视串行终端端口,以十六进制转储未缓冲的数据。数据不是面向行的。 我试过: socat -b 1 -v -x /dev/ttymxc2,cfmakeraw - | socat -b 1 -v -x /dev/ttymxc2,cfmakeraw - |猫 >/dev/nul...
有时,我的一些集成测试会失败并出现上述消息。我正在使用下面的代码来准备端口。 for(int i = 0; i < 5; i++) { t...
使用 Windows cmd 测试 COM 端口 LED 客户显示屏
我买客显,客显有PL-2303HXD芯片。客户显示器连接到我的 PC 的 COM1。我可以使用该客户显示器附带的测试软件发送任何号码。但我不能
如何在 Yocto sysvinit-inittab 配方中从 /etc/inittab 中排除特定行?
我正在使用 Yocto 构建系统,并且遇到了管理 /etc/inittab 的配方的问题。具体来说,我在构建中使用 Karo Q93 板和 Karo 层。其中