我一直在试图确定USB串行端口(COM)端口是否被系统总线驱动程序监控,但没有成功。 基本上我有一个应用程序,通过过滤设备驱动程序监视COM端口。 在阅读Dobb博士杂志的这篇文章后,我能够做到这一点。 现在试图在一个单独的应用程序中实现的是能够确定是否有一个应用程序挂钩到一个特定的COM端口使用过滤设备驱动程序。 任何人都可以帮助或引导我
我正在使用通讯程序(Tera Term)通过拨号连接与另一台计算机通讯。 我会用这个软件发送一个文件,但我想监视端口(如PortMon)来测量传输文件所花费的时间。 你知道没有这个软件的任何方式吗? 非常感谢
Bugfix更新:截至2013年6月,FTDI确实向我承认这个错误是真实的。 他们已经发布了一个新版本的驱动程序(2.8.30.0,2013年7月 – 12日),解决了这个问题。 驱动程序在2013年8月1日左右通过WHQL完成,目前可以通过Windows Update获得。 我已经重新testing了运行相同的testing代码,并且不能用新的驱动程序重现问题,所以目前修复似乎是“升级驱动程序”。 原来的问题:我有一个基于FTDI FT2232D芯片的8端口USB串口设备(来自VsCOM)。 当我从其中一个端口以特定的设置进行传输时,我使用硬件握手从另一端停止和启动数据stream,出现两个症状: 1)输出数据有时变成垃圾。 将会有NUL的字符,几乎任何你可以想到的随机的东西。 2)WriteFile调用有时会返回大于我要求写入的数字的字节数。 这不是一个错字。 我要求传输30个字节,发送的字节数是8192(是的,在我打电话之前,我清除了发送给0的号码)。 相关事实:使用FTDI驱动程序2.8.24.0,这是今天最新的。 串口设置为19200,7个数据位,奇校验,1个停止位。 与另一个基于FTDI的串行设备(这次是单端口设备)相同的行为。 我得到与另一个相同types的8端口设备相同的行为。 在内置串行端口(COM1)上传输时,我不会收到这种行为。 我有一个非常简单的“Writer”程序,它可以连续传输,而且每秒钟只需一个非常简单的“Toggler”程序来切换RTS。 这些似乎在60秒内触发了这个问题。 我已经向设备的制造商提出了一个问题,但他们还没有多less时间来回应。 编译器是mingw32,Qt 4.8.1(gcc 4.4.0)的Qt安装程序中包含的一个, 我想首先知道,如果有什么人可以想到的,我可以做到触发这种行为。 我无法想象任何东西,但总有些事情我不知道。 其次,我附加了Writer和Togglertesting程序。 如果有人能够发现一些可能触发该计划的问题,我很乐意听到这个消息。 我有很多麻烦,认为有一个驱动程序错误(特别是从FTDI芯片成熟的东西),但是情况迫使我认为至less有一些驱动程序的参与。 至less,不pipe我做什么,它都不应该返回比我要求写的更多的字节。 作家程序: #include <iostream> #include <string> using std::cerr; using std::endl; #include <stdio.h> #include <windows.h> int main(int argc, char **argv) { cerr << "COM Writer, […]
我的硬件设备连接到PC并暴露虚拟串行端口。 串行端口号取决于将设备插入的物理USB端口。 我的应用程序可以知道我的设备连接到哪个物理USB端口吗? 这真的可以帮助我优化代码。 目前我的应用程序通过遍历所有可能的端口来确定设备连接的实际端口号,这是一个漫长的过程。 如果我知道连接了哪个USB端口,我已经知道它公开的是哪个通信端口,并且可以为每个特定的物理USB端口(configuration文件)保存/加载这些设置。 我正在使用C ++ / MFC和Windows 7.我也想这个在XP中工作。
我正在试图将数据写入到我的Arduino Uno,并从中获取date。 我在Windows 8.1上使用NetBeans,并使用库“RXTXcomm.jar”来执行此操作。 我的代码是这样的,我的Arduino在COM3上,它会在第25行和第80行引发一个错误: 错误 java.lang.UnsatisfiedLinkError:java.library.path中没有rxtxSerial加载时抛出gnu.io.RXTXCommDriver线程“main”中的exceptionjava.lang.UnsatisfiedLinkError:java.library.path中没有rxtxSerial 在java.lang.ClassLoader.loadLibrary(ClassLoader.java:1867) 在java.lang.Runtime.loadLibrary0(Runtime.java:870) 在java.lang.System.loadLibrary(System.java:1122) 在gnu.io.CommPortIdentifier。(CommPortIdentifier.java:83) 在arduino.test.pkg3.ArduinoTest3.initialize(ArduinoTest3.java:25) 在arduino.test.pkg3.ArduinoTest3.main(ArduinoTest3.java:80) 代码 : 01: package arduino.test.pkg3; 02: 03: import java.io.BufferedReader; 04: import java.io.InputStreamReader; 05: import java.io.OutputStream; 06: import gnu.io.CommPortIdentifier; 07: import gnu.io.SerialPort; 08: import gnu.io.SerialPortEvent; 09: import gnu.io.SerialPortEventListener; 10: import java.util.Enumeration; 11: 12: public class ArduinoTest3 implements SerialPortEventListener { 13: 14: SerialPort serialPort; […]
我在Qt中打开串口有问题。 尝试打开端口失败后收到的错误消息是UnsupportedOperationError 。 我想指出几件事情: 我试图打开的端口是在使用USB(CDC)的ARM MCU中实现的, 我可以在其他应用程序(如teraterm或realterm)中打开端口, 我能够在一分钟内打开Qt应用程序中的端口。 我在ARM设备中添加了一些代码(根本不涉及USBfunction),我不能再打开Qt中的端口。 我testing了我可以发送/接收在其他程序中打开的端口上的数据(即实际的), 该端口在其他应用程序工作,但不是Qt(尝试从Qt创build者的terminal示例,它也无法打开端口), 我曾经遇到过这种行为,但没有时间进一步深入。 现在它阻止了我。 开放港口的情况可能是什么? qt是否提出了任何额外的要求? 我真的很感激所有的帮助。 我在Windows机器上运行qt。 编辑:这是Qt创build者负责打开端口的terminal示例的一部分。 void MainWindow::openSerialPort() { SettingsDialog::Settings p = settings->settings(); serial->setPortName(p.name); serial->setBaudRate(p.baudRate); serial->setDataBits(p.dataBits); serial->setParity(p.parity); serial->setStopBits(p.stopBits); serial->setFlowControl(p.flowControl); if (serial->open(QIODevice::ReadWrite)) { console->setEnabled(true); console->setLocalEchoEnabled(p.localEchoEnabled); ui->actionConnect->setEnabled(false); ui->actionDisconnect->setEnabled(true); ui->actionConfigure->setEnabled(false); showStatusMessage(tr("Connected to %1 : %2, %3, %4, %5, %6") .arg(p.name).arg(p.stringBaudRate).arg(p.stringDataBits) .arg(p.stringParity).arg(p.stringStopBits).arg(p.stringFlowControl)); } else { qDebug() << […]
我在学校买了一台用于机器人项目的Variense VMU931惯性测量单元(IMU),我正努力让它在Ubuntu中与我的笔记本电脑进行可靠的通信。 我使用C + + termios连接到它使用8n1无奇偶等等等等等等等等。 我已经尝试了所有我能想到的设置的排列,而且我仍然无法可靠地向IMU发送命令。 我打电话给Variense的支持人员,并和他们编写软件的工程师交谈,他说这是一个已知的问题。 显然,它在Windows中完美的工作(和Windows演示软件与我的设备工作正常),但我们都没有意识到Windows和Linux中的USB串行仿真之间的显着差异。 该文件顶部的构造函数显示了我如何打开和configuration端口: https://github.com/jsford/FFAST/blob/master/VMU931/src/vmu.cpp 任何帮助将是伟大的。 我一直在撕掉我的头发! 谢谢!
我有一个Linux系统: 守护进程通过RS232端口与另一台设备通信。 一个通过套接字与守护进程通信的php + javascript网站。 现在老板想知道需要付出多less努力才能将所有这些移植到Windowze上。 从来没有真正在Windows上编程过,我想问一下这将是多么容易/困难和select是什么。 谢谢,
我打电话WriteFile发送数据到调制解调器: BOOL writeResult = WriteFile(m_hPort, p_message, length, &numOut, NULL); 哪里: m_hPort是一个有效的HANDLE p_message是一个包含ate0\r的unsigned char* 长度是一个值为5的int numOut是一个unsigned long初始化为0 偶尔我看到这个方法成功,但是numOut!= length WriteFile如何在不发送任何数据的情况下返回成功? 编辑这是我如何创build句柄: HANDLE hPort = CreateFileA("\\\\.\\COM5", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL); 我检查了返回,它不是INVALID_HANDLE_VALUE ,这表明它是有效的。
我正在XBee收发器和我的电脑之间发送数据。 问题是, 最初(在我的程序中)数据是随机字符。 只有在XCTU打开串行连接后才能正常工作。 所以串行数据被正确的发送,但XCTU做了一些事情,我的电脑同步到XBee。 波特率设置在9600两边。 有人知道XCTU在做什么吗? 或者我可以如何在我的C ++程序中复制它? 希望下面的图片更清楚地解释发生的事情: