Excel 正在读取已打开的COM(串行)端口?
我试图从excel/vba控制台式万用表(GW Instek GDM-8251A)。 我找不到协议的描述,因此需要对其进行反向工程 通信方式为usb串行通信 因此,我在VBA中加载了下一页中的模块,该模块提供了使用windows API与COM端口对话的函数 这是前一次会议上推荐的 因此,我们的计划是打开提供的DMMVIEWER应用程序,监听设备之间的通信量 然而,问题是,当我运行CommOpen函数时,如果DMMVIEWER已经在运行,则会出现以下错误,该函数本身调用CreateFile win32 API 具体参数如下所示Excel 正在读取已打开的COM(串行)端口?,excel,serial-port,reverse-engineering,vba,Excel,Serial Port,Reverse Engineering,Vba,我试图从excel/vba控制台式万用表(GW Instek GDM-8251A)。 我找不到协议的描述,因此需要对其进行反向工程 通信方式为usb串行通信 因此,我在VBA中加载了下一页中的模块,该模块提供了使用windows API与COM端口对话的函数 这是前一次会议上推荐的 因此,我们的计划是打开提供的DMMVIEWER应用程序,监听设备之间的通信量 然而,问题是,当我运行CommOpen函数时,如果DMMVIEWER已经在运行,则会出现以下错误,该函数本身调用CreateFile w
CreateFile(strPort, GENERIC_READ Or _
GENERIC_WRITE, 0, ByVal 0&, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0)
或者就是这个
CreateFile( "COM4", -1073741824 , 0 , 0 3 ,128 ,0)
这将返回以下错误
COM Error: Error (5): CommOpen (CreateFile) - Access is denied.
我可以选择在usb捕获模式下使用wireshark,但是所有的usb开销使得理解底层协议变得更加困难
在excel/vba中执行此操作,可以更轻松地尝试发送数据并查看发生的情况
所以我的问题是。如何以非独占读取模式打开COM端口,以便嗅探串行通信
谢谢
我计划将我关于协议和VBA代码的发现发布到sigrok.org项目中
(顺便说一句,我试过freeserialanalyzer.com,但15天的试用期非常有限,最多5次捕获,这甚至不足以正确配置捕获,而且这个软件太贵了,我甚至找不到价格,大概800美元。我还试过realterm,它可以将串行流保存为文本,但是嗅探是存在的g连接需要一个特殊的驱动程序,但我找不到,显然需要捐款。我尝试了portmon,但捕获选项仍然显示为灰色)