草庐IT

COM串口

全部标签

windows - COM 服务器 : ESP not saved across a function call when calling interface method

我正在EXE文件中实现COM服务器。准确地说,我正在向现有应用程序添加COM接口(interface)。最终目标是使应用程序自动化。第一个组件和一个接口(interface)(目前只有一个方法)基本就位。我可以在DLL中构建进程内服务器并成功获取接口(interface)指针并调用该方法。这是第一步,因为我只是在学习。我以后不需要DLL;它只是作为概念证明,我的组件和接口(interface)基本上没问题。然后我在EXE中构建了一个进程外服务器。我已经到了可以从客户端调用CoCreateInstance()的地步,然后启动EXE,注册其工厂,然后工厂创建组件的实例。CoCreateIn

windows - 如何以编程方式将 COM+ 组件 -> 事务设置为不支持?

我正在寻找一种解决方案,以编程方式将Com+组件属性->事务支持修改为“不支持”手动步骤如下:打开组件服务对话框(comexp.msc)展开组件服务->计算机->我的电脑查找并展开COM+QCDeadLetterQueueListener在打开的组件中展开文件夹Components找到组件QC.DLQListener并打开该组件的上下文菜单并选择属性在“属性”屏幕上,选择“交易”选项卡并将交易支持设置为不支持点击“确定”保存更改 最佳答案 在我花了几个小时解决这个问题之后,我终于在C#上找到了解决方案。我从以下文章中获得了深刻的见解

PHP COM 端口与 DIO 的连接

我正在尝试将称重机与PHP连接起来。我已经用super终端测试过它工作正常。但是当我将PHP代码与fopen或dio_open一起使用时,它会被执行,但是当fgets或dio_read是调用,它挂起并且不显示任何内容。打开示例exec('modecom2:BAUD=2400PARITY=Ndata=8stop=1xon=on');$fp=fopen("COM2:","r");if(!$fp){echo"Uh-oh.Portnotopened.";}else{echofgets($fp);fclose($fp);}DIO示例exec('modeCOM2:baud=2400data=8st

windows - 当用户没有足够的权限时隐藏 COM-Server OLE 错误消息

我正在升级一个带有COM自动化接口(interface)的Delphi软件项目,以简化一些批处理任务(通过WSH脚本)。这本身很容易......但是,软件的大多数“实际”用户不需要(甚至不知道)这个界面,我想让他们免于注册COM-Server或错误消息当程序无法启动com服务器时弹出(目前该软件没有安装程序-它只是复制并运行。注册任何东西对用户来说都是一个额外的步骤。它是内部的,所以客户已经习惯了。..).真正的问题是:我能否以编程方式查明运行该软件的当前用户是否有足够的权限来注册COM服务器,然后(如果没有)避免尝试创建服务器?我想要一种行为,当用户没有足够的权限时,自动化服务器就不

c++ - 检测移除打开的串口设备(Qt/Windows)

我有一个Qt应用程序,它通过串口与加密狗通信(它是一个FTDI芯片)。我轮询QSerialPortInfo::availablePorts()以检测何时添加或删除端口,然后向加密狗发送一个空行以识别它(我的加密狗用它的ID对此做出响应,我指望它对99%的其他设备无害)。一切正常,除了如果您在连接处于事件状态时移除加密狗,连接似乎没有关闭并且端口仍在QSerialPortInfo::中返回availablePorts().有谁知道在我连接到串行加密狗时如何检测它的移除(除了像ping之类的黑客攻击)。我试过监听QSerialPort发出的所有信号(error()、readChannelF

c++ - 通过系统虚拟串口向蓝牙发送字节

我希望能够在C++中通过蓝牙发送和接收数据。我发现系统(win8.1)为配对设备创建了2个虚拟端口。当我尝试使用WriteFile将数据发送到连接的端口(“传入”)时,函数返回成功并且写入了0个字节。我的问题无法向虚拟BT串口发送和读取字节。我使用“GetDefaultCommConfig”来检查串行端口是否处于事件状态。它适用于USBUART连接,但有时无法连接虚拟端口。我的问题:我应该连接到2个端口,将字节写入“outgoing”并监听“传入”端口?我应该在我的代码中更改什么来解决我的问题?为什么Windows为蓝牙创建2个串口?代码:#define_CRT_SECURE_NO_W

c# - 查找串行设备 COM 端口

我有一个WindowsC#应用程序。该应用程序通过串行端口连接到RFID读卡器。虽然我默认给它COM端口3。我遇到了用户端口不可用并且他正在使用的端口与他的Windows操作系统不同的情况。我的应用程序确实为用户提供了更改COM端口的能力,但是要找到他们的操作系统正在使用哪个COM端口,用户需要转到设备管理器并进行检查,新手可能不太适应。有没有一种功能或方法可以准确地找到我的RFID卡在Windows中连接到哪个端口,以便我可以简单地显示如下:应用程序端口设置为:COM....操作系统上的设备连接端口:COM....另外我的目标框架是3.5编辑1:尝试使用SerialPort.GetP

c - 在 Windows 的 C/C++ 中打开 com 端口时将 HANDLE 作为参数传递

所以我有如下内容:在我的main.c中HANDLE*hCom;success=openport(hCom);ReadFile(hCom......)//ThisProducesGarbledResultsopenport()函数:intopenport(HANDLE*hCom){hCom=CreateFile(......)ReadFile(hCom......)//ThisProducesGoodResultsreturn0;}当我在我的openport()函数中读取命令时,一切正常,但如果我在我的main.c中使用hCom,我会得到垃圾。我的问题是,我做错了什么/遗漏了什么?如有任

c - c中串口读取,使用WinApi函数; WaitCommEvent 失败

我尝试用C语言编写一个基于事件的小型应用程序以读取串行端口(来源如下)。我的程序是使用WinApi函数。comport.c具有用于处理COM端口(打开、读取、写入)的函数,utils.c具有一些辅助函数。我的程序总是产生以下输出:COM1isselectedtobelistened.GetCommMaskresult:0x00000029(EV_RXCHAR:0x0001,EV_CTS:0x0008,EV_RLSD:0x0020)Pressanykeytoproceed...I/Oispending(WaitCommEvent)...I/Oispending(WaitCommEvent

windows - 使用 Outlooks COM 类组件仅在管理员权限下失败

我有一个查询当前Outlooksession的PowerShell脚本。仅在未提升的PowerShell窗口中运行它会像预期的那样工作,但是当我在提升的提示中时它会失败,如下所示:“正常”session:PS>New-Object-ComOutlook.ApplicationApplication:System.__ComObjectClass:0Session:System.__ComObjectParent:Assistant:Name:OutlookVersion:15.0.0.4903COMAddIns:System.__ComObjectExplorers:System.__