delphi之动态库调用和串口通讯

本文介绍了使用Spcomm控件实现串口通讯的方法,包括设置串口名称、波特率,以及通过函数发送字符串和接收数据的过程。此外,还提供了动态库调用的例子,演示了如何使用stdcall调用约定来打开、关闭设备及获取设备状态。

串口通讯:

Spcomm 控件属性:

 

CommName  :表示COM1,COM2等串口的名字;

 

BaudRate:设定波特率9600,4800等

 

StartComm

StopComm

 

 

 函数WriteCommData(pDataToWrite: PChar;dwSizeofDataToWrite:Word ): boolean

用于发送一个字符串到写线程,发送成功返回true,发送失败返回false, 执行此函数将立即得到返回值,发送操作随后行。    

函数有两个参数,其中 pdatatowrite是要发送的字符串,dwsizeofdatatowrite 是发送的长度。

 

事件OnReceiveData : procedure (Sender: TObject;Buffer: Pointer;BufferLength: Word) of object   

当输入缓存有数据时将触发该事件,在这里可以对从串口收到的数据进行处理。Buffer中是收到的数据,bufferlength是收到的数据长度

 

 动态库调用

 

 unit CMUPS_HB600DLL;

interface
type
    IcumpsHB600 = record

     end;

    function ZT_UPS_OpenDevice(pstrCom :pansichar; var m_nUPSHandle:pinteger;nFage:Integer=0):Integer;stdcall;  //打开设备
    function ZT_UPS_CloseDevice(nHandle:pInteger):Integer;stdcall;//关闭设备
    function ZT_UPS_GetStatus (nHandle:pInteger):Integer;stdcall; // 取得设备状态



implementation

  function ZT_UPS_OpenDevice; external 'ZT_UPS.dll';
  function ZT_UPS_CloseDevice; external 'ZT_UPS.dll';
  function ZT_UPS_GetStatus; external 'ZT_UPS.dll';



end.

 

上面是个例子。需要注意: 

一、调用参数用stdcall 

二、用external语句指定被调用的DLL文件的路径和名称 

三、注意参数的传递。

pansichar类型对应的是c语言的char*
pinteger类型对应的是c语言的int*
integer类型对应的是c语言的int
var m_nUPSHandle:pinteger 对应的是c语言的int* ,这里是引用传递

  



 

 

 

 

转载于:https://www.cnblogs.com/feiyunaima/p/5987848.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值