delphi调用COM端口问题

徐松层 2019-11-23 10:54:32
同一个delphi CS程式有两个界面要读取COM口刷卡数据,有一个可以,另外一个无提示连接成功,刷卡无效,请教。
...全文
231 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
SupermanTm 2020-08-24
  • 打赏
  • 举报
回复
把“读取串口数据”作为一个单独的控件,A/B界面都只是调用这个控件去取得数据,这就不会冲突了
nm_wyh 2020-08-20
  • 打赏
  • 举报
回复
首先COM口只能被一个程序打开,打开后其他程序无法使用。 你的这个需求,可以通过消息或其他方式实现,在A界面中打开串口,接收到数据后同步到B窗体。(消息,回调,直接窗体引用都可以达到目的)
doloopcn 2019-12-04
  • 打赏
  • 举报
回复
COM这古老的东东一定要用的时候OPEN,通知系统“占用”状态,用完了的时候CLOSE。不可以两个或以上的设备同时使用。
npkaida 2019-11-26
  • 打赏
  • 举报
回复
COM口是独享的,同一时间只能一个打开。
天行归来 2019-11-24
  • 打赏
  • 举报
回复
可能串口占用了,比如:A和B界面,A界面打开了串口连接设备,B界面再连接设备因为串口已占用, CreateFile (打开) 就会失败。
目录: 1 Uppas40.htm Delphi 4增訂的Object Pascal 19K 2 Api_printer.htm Api函数列表-与打印有关 30K 3 Autocreate.htm 在Delphi3程序中自动检测、建立数据库别名 7K 4 Autoxize.htm DELPHI中自适应表单的实现 3K 5 Bat.htm 在Delphi中利用Tbatch组件完成数据批处理 5K 6 Bde.htm 如何在注册表中注册BDE 2K 7 Bjjlb.htm Delphi编辑俱乐部 4K 8 Cgi_1.htm CGI技术及其开发 11K 9 Cgi_2.htm CGI技术及其开发(二) 12K 10 Chang_backmap.htm 用Delphi实现壁纸更换 3K 11 Change_ip_dns.htm 任何动态改变/添加网络设置中的 TCP/IP 的 DNS 地址 1K 12 Colorcour.htm 让彩色光标出现在Delphi程序中 2K 13 Compon_mk.htm 面向组件的系统开发方法 2K 14 Comtech.htm COM/DCOM如何传递数组 2K 15 Comvsdcom.htm COM/DCOM的区别与联系 2K 16 Cookite.htm Delphi 3中Cookie的建立使用 6K 17 Copy_screen.htm 一个实用的Delphi屏幕拷贝程序的设计 11K 18 Create_oracle7.htm 开发基于ORACLE7数据库的管理信息系统 9K 19 Cs_fast.htm 提高客户机/服务器应用系统性能的一些方法 8K 20 Def_color_dlg.htm 用Delphi实现自定义颜色对话框及其构件 12K 21 Def_preview.htm 自定义快速报表的打印预览窗口 6K 22 Delete.htm 如何把文件删除到回收站中 1K 23 Delphi_c.htm 在Delphi与C++之间实现函数与对象共享 7K 24 Delphi_err.htm Delphi编译错误中文手册 34K 25 Delphi_net1.htm DELPHI与INTERNET 34K 26 Delphi_net2.htm DELPHI与INTERNET 46K 27 Delphi_quick_develop.htm Delphi之快速设计(程序设计篇) 8K 28 Delphi_quick_develop2.htm Delphi之快速设计(界面篇) 3K 29 Delphi23_io.htm 在DELPHI2.0/3.0中直接操作端口 3K 30 Delphivspb.htm 开发AS/400应用系统PB5与Delphi3的比较 9K 31 Device_isok.htm 检查驱动器是否就绪 1K 32 Dtccw03.htm 资源文件在DELPHI中的使用 10K 33 Dttray.htm 如何创建任务栏的应用程序 11K 34 Edit_sysmenu.htm 控制系统菜单 3K 35 Fix_sybase.htm 如何恢复Sybase SQL Anywhere的数据库 4K 36 Fixsysbase_in.htm 解决sybase用户数据库不能进入故障的一种方法 5K 37 From_move.htm 用Delphi实现无边界窗体的移动 3K 38 Function.htm 部分函数、命令、属性中文说明 13K 39 Get_form.htm Win95/98下监控运行的其他程序 2K 40 Get_info.htm 使用Delphi获取系列信息 3K 41 Get_net_friend.htm 如何在程序中动态取得Win95/98的网络邻居中的工作组及计算机名 12K 42 H_sort.htm 在DELPHI中用线程排序 4K 43 Happymouse.htm 用Delphi编制趣味动画鼠标 3K 44 Hint.htm 改造HINT的输出方式 5K 45 Howto_chinese_delphi.htm "Delphi之完全汉语"终结版 6K 46 If.htm Delphi数据集过滤技巧 4K 47 Img.htm Delphi下汉字输入法的编程及使用 5K 48 Index_notf.htm 怎样解决打开一个DBF表时的"Index not found.."错误 3K 49 Install.htm 如何制作Delphi程序安装盘 7K 50 Ip
支持所有标准ESC/POS指令集打印机,北洋、佳博、商祺等 支持串口、并口、USB、网口 1.4是目前最新的公用版本了,其它后续版本都有厂家的标示 包含DLL文件,帮助,VB/VC/DELPHI例程 下边是POS_OPEN函数原型 HANDLE POS_Open(LPCTSTR lpName, int nComBaudrate, int nComDataBits, int nComStopBits, int nComParity, int nParam) 描述 打开端口。 参数 lpName [in] 指向以 null 结尾的打印机名称或端口名称。 当参数nParam的值为POS_COM_DTR_DSR、POS_COM_RTS_CTS、POS_COM_XON_XOFF或POS_COM_NO_HANDSHAKE 时, “COM1”,“COM2”,“COM3”,“COM4”等表示串口; 当参数nParam的值为POS_OPEN_PARALLEL_PORT时,“LPT1”,“LPT2”等表示并口; 当参数nParam的值为POS_OPEN_BYUSB_PORT时,“BYUSB-0”、“BYUSB-1”、“BYUSB-2”、“BYUSB-3”等表示USB端口。 当参数nParam的值为POS_OPEN_PRINTNAME时,表示打开指定的打印机。 当参数nParam的值为POS_OPEN_NETPORT时,表示打开指定的网络接口,如“192.168.10.251”表示网络接口IP地址,打印时参考“网络打印简介”。 nComBaudrate [in] 指定串口的波特率(bps)。 可以为以下值之一: 2400,4800,9600,19200,38400,57600,115200等。 具体的值与打印机的端口参数有关,不过最大不应超过256000。 nComDataBits [in] 指定串口通讯时的数据位数。 可以为 5 到 8。 具体的值与打印机的端口参数有关。 nComStopBits [in] 指定串口通讯时的数据停止位数。 可以为以下值之一: Flag Value Meaning POS_COM_ONESTOPBIT 0x00 停止位为1 POS_COM_ONE5STOPBITS 0x01 停止位为1.5 POS_COM_TWOSTOPBITS 0x02 停止位为2 nComParity [in] 指定串口的奇偶校验方法。 可以为以下值之一: Flag Value Meaning POS_COM_NOPARITY 0x00 无校验 POS_COM_ODDPARITY 0x01 奇校验 POS_COM_EVENPARITY 0x02 偶校验 POS_COM_MARKPARITY 0x03 标记校验 POS_COM_SPACEPARITY 0x04 空格校验 nParam [in] 指定串口的流控制(握手)方式、或表示通讯方式。请参考参数lpName的说明。 可以为以下值之一: Flag Value Meaning POS_COM_DTR_DSR 0x00 流控制为DTR/DST POS_COM_RTS_CTS 0x01 流控制为RTS/CTS POS_COM_XON_XOFF 0x02 流控制为XON/OFF POS_COM_NO_HANDSHAKE 0x03 无握手 POS_OPEN_PARALLEL_PORT 0x12 打开并口通讯端口 POS_OPEN_BYUSB_PORT 0x13 打开USB通讯端口 POS_OPEN_PRINTNAME 0X14 打开打印机驱动程序 POS_OPEN_NETPORT 0x15 打开网络接口 其中前两项也统称为硬件流控制,一般选用 RTS/CTS 方式。 返回值 如果函数调用成功,返回一个已打开的端口句柄。 如果函数调用失败,返回值为 INVALID_HANDLE_VALUE (-1)。 备注 1.如果打开的是并口(LPT1,LPT2等),那么后面的参数 nComBaudrate,nComDataBits,nComStopBits,nComParity将被忽略,可以设置为0,并且参数nParam必需指定为POS_OPEN_PARALLEL_PORT。同样,打开USB端口或打印机驱动程序,nParam必需指定为相应的参数修改。 2.如果由 lpName 指定的通讯端口被其他程序占用,那么返回值为 INVALID_HANDLE_VALUE。 3.如果参数出错,也返回INVALID_HANDLE_VALUE。 4.如果通讯端口已经打开,则会尝试关闭已经打开的端口,然后再去打开。 5.如果参数nParam指定打开USB端口,则需要安装随机附带的端口驱动程序,并把打印机配置为支持USB端口模式。 6.另请参考 POS_Close,POS_Reset。
很久没有发布东东了,今天看到盒子上有朋友发布了个三层的东东, 下来大概看了看,貌似使用起来不太方便,曾经用过ASTA和RmoObject,都不是那么让人满意,BUG多,并且庞大需要安装,使用十分不方便。 为了继续支持我喜欢的DELPHI和可爱的盒子, 特发布个自己写的远程数据库对象希望能给大家平常的工作带来便利和高效(偶自己和同事们都用了挺长时间,十分稳定易用)。 用DELPHI的朋友少不了要和数据库打交道,一般小程序都使用ACCESS做数据库感觉十分方便,不用装服务端,客户端不用单独装驱动, 发布程序时直接目录一拷贝就完事,但缺点是不方便从其它计算机对它进行访问, 有了偶这个东东,就可以很方便容易的实现咯。 ps : 就是连接Oracle和mysql,客户端也可以不用装驱动哦 使用步骤 解压后找个地方存放 将GobUnit目录添加到delphi的搜索路径 将DXSockEnt30(我改过bug的版本)的3个子目录也添加到delphi的搜索路径 即可使用和编译所有偶提供的代码 FAQ: 这个东东都提供什么功能? 答:提供最简单方便高效的方式,通过ADO对象实现远程数据库 这个东东为什么不封装成控件? 答:本类以单元形式封装,只要加到搜索路径后直接引用即可,无需经过安装等麻烦的步骤。 这个东东适合应用在什么场合? 答:适合应用于小型分布式程序。 这个东东掌握起来有难度吗? 答:没有任何难度,就和你开发本地数据程序一样简单。 这个东东可以应用在我已有的程序里吗? 答:由于我使用的是AdoQuery作为数据集载体,所以无需更改为其他控件,现有的本地数据库程序也可以非常容易的改造为支持分布式数据库。 这个东东稳定吗? 答:经自己长期做小白鼠广泛的实际应用实践,发现方便,稳定。 服务端的端口号是多少? 答:服务端的端口号可以随意设置,只要不和其他程序冲突就可以,并且客户端连接服务端时必须端口一致. 如果服务端重启了客户端需要重启吗? 答:不用,客户端只要连接上服务端以后就有自动断线重连的功能。 这个东东免费吗? 答:完全免费,并且开放所有源代码,你可以随意改进,传播它,当然如果更好用了,记得给我也发一份 :)(要保留偶的版权和注释信息哦) 这个东东使用到了那些控件? 答:delphi的ADO控件,INDY,以及第3方Dxsock(服务端用)。 同时发布的还有我自己积累的几个常用单元,有日志,调试,tcp的通用服务和客户端模块等,同样都是十分有用的东东。 这个东东有demo程序吗? 答:有最简单的示范程序,但时间关系只写了最简单的演示代码,还有很多值得你去挖掘的实用接口和单元。 我有了改进版本,怎么联系这个东东的作者? 答:QQ 22900104 ,Email 22900104@qq.com 马敏钊 发布这个东东的目的是什么? 答:好用的东东大家分享,共同学习,共同进步,希望大家都能发扬开源精神。 构架说明: 大概是这样的,偶有一个服务器对象,负责提供数据库服务,在需要提供数据服务的程序里创建它即可。 使用起来十分简单 首先引用服务端单元 uses UntRmodbSvr; //创建远程服务对象 (参数1 服务端口号 日志对象,如果不需要记录日志请填nil) Gob_RmoDBsvr := TRmodbSvr.Create(FSvrPort, nil); //连接数据库 可以是ADO支持的所有数据库 调用TDBMrg提供的获取各种数据库的链接字符串即可,这里连接Access数据库 Gob_RmoDBsvr.ConnToDb(TDBMrg.GetAccessConnStr('cfg.mdb')); 到此为止,2行代码使你的这个程序具有了将数据库发布出去的能力,其它机器的程序可以方便的通过它访问到数据库,像使用本地数据库一样。 客户端只需连接服务端即可,不管服务端是什么样的数据库,无需安装任何数据库驱动。 uses UntRemSql; //创建客户端对象 RmoClient := TRmoHelper.Create(); //连接服务端 填入服务端地址和端口(与服务端端口一致即可) Result := RmoClient.ReConnSvr(ISvrIP, Iport); 2行代码使你的客户端程序具有了方便的访问到远端的数据库,像使用本地数据库一样,并且你原有的单机数据库程序可以很方便改为远程数据库。 具体使用方法可以查看DEMO程序 为了方便交流建了个QQ群,欢迎大家参与 15637473

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧