Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 正在读取已打开的COM(串行)端口?_Excel_Serial Port_Reverse Engineering_Vba - Fatal编程技术网

Excel 正在读取已打开的COM(串行)端口?

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

我试图从excel/vba控制台式万用表(GW Instek GDM-8251A)。 我找不到协议的描述,因此需要对其进行反向工程

通信方式为usb串行通信

因此,我在VBA中加载了下一页中的模块,该模块提供了使用windows API与COM端口对话的函数

这是前一次会议上推荐的

因此,我们的计划是打开提供的DMMVIEWER应用程序,监听设备之间的通信量

然而,问题是,当我运行CommOpen函数时,如果DMMVIEWER已经在运行,则会出现以下错误,该函数本身调用CreateFile win32 API

具体参数如下所示

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,但捕获选项仍然显示为灰色)