delphi之动态库调用和串口通讯
串口通讯:
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=):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* ,这里是引用传递
delphi之动态库调用和串口通讯的更多相关文章
- 万能动态库调用工具IDMA(InvokeDllMethodsAdvance)
万能动态库调用工具IDMA 开发者:马兆瑞 QQ/微信:624762543 百度云下载链接:https://pan.baidu.com/s/1skW5W4H CSDN下载链接:http://d ...
- Linux 静态库&动态库调用
1.什么是库在windows平台和linux平台下都大量存在着库.本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行.由于windows和linux的本质不同,因此二者库的二进制是不 ...
- c++动态库封装及调用(3、windows下动态库调用)
1.DLL的隐式调用 隐式链接采用静态加载的方式,比较简单,需要.h..lib..dll三件套.新建“控制台应用程序”或“空项目”.配置如下: 项目->属性->配置属性->VC++ ...
- delphi中使用spcomm来实现串口通讯(转载)
http://blog.sina.com.cn/s/blog_7880f98301010pi8.html 转自——飘雪的世界 最近两天一直在研究spcomm控件的使用,之前也是很不太明白,看了很多的例 ...
- 用SPCOMM 在 Delphi中实现串口通讯 转
用Delphi 实现串口通讯,常用的几种方法为:使用控件如MSCOMM和SPCOMM,使用API函数或者在Delphi 中调用其它串口通讯程序.利用API编写串口通信程序较为复杂,需要掌握大量通信 ...
- Windows下动态库的编译以及调用
1.MFC下生成动态库 1>显式调用 在.cpp文件里添加接口函数 int sum(int a,int b) { return a + b; } int sub(int a,int b) { r ...
- java使用JNA框架调用dll动态库
这两天了解了一下java调用dll动态库的方法,总的有三种:JNI.JNA.JNative.其中JNA调用DLL是最方便的. ·JNI ·JNA ·JNative java使用 JNI来调用dll动态 ...
- c++调用动态库失败解决办法
c++调用动态库失败解决办法 之前写好的程序今天早上过来发现在服务器上出错了,于是就各种查问题,整整一个早上外加下午两个小时都在查这个问题,最终被我找到了问题: 在程序中我发现LoadLibrary( ...
- 【转】分析Linux和windows动态库
原文地址:http://www.cnblogs.com/chio/archive/2008/11/13/1333119.html 摘要:动态链接库技术实现和设计程序常用的技术,在Windows和Lin ...
随机推荐
- 一道常被人轻视的前端JS面试题(转)
分享下我曾经出过的一道面试题,此题是我出的一套前端面试题中的最后一题,用来考核面试者的JavaScript的综合能力,很可惜到目前为止的将近两年中,几乎没有人能够完全答对,并非多难只是因为大多面试者过 ...
- Python for Informatics 第11章 正则表达式一(译)
注:文章原文为Dr. Charles Severance 的 <Python for Informatics>.文中代码用3.4版改写,并在本机测试通过. 目前为止,我们一直在通读文件,查 ...
- BZOJ 1012 题解
1012: [JSOI2008]最大数maxnumber Time Limit: 3 Sec Memory Limit: 162 MBSubmit: 8468 Solved: 3702[Submi ...
- sql:select赋值和set赋值的区别
1)Set写法 declare @i integer set @i=(select count(*) from test) select @i Select写法 declare @i integer ...
- Ninject使用demo
public class HomeController : Controller { public ActionResult Index() { //核心对象 IKernel ninjectKerne ...
- 隐藏Jquery dialog 按钮
$(".ui-dialog-buttonpane button").hide(); //隐藏dialog中所有button $(".ui-dialog-buttonpan ...
- 应对Memcached缓存失效,导致高并发查询DB的四种思路(l转)
当Memcached缓存失效时,容易出现高并发的查询DB,导致DB压力骤然上升. 这篇blog主要是探讨如何在缓存将要失效时,及时地更新缓存,而不是如何在缓存失效之后,如何防止高并发的DB查询. 解决 ...
- 树莓派安装LAMP作为服务器
先运行 sudo apt-get update 更新软件源 1.安装Apache sudo apt-get install apache2 2.安装Mysql sudo apt-get install ...
- LruCache
参考文章: LruCache源码解析
- [CareerCup] 17.6 Sort Array 排列数组
17.6 Given an array of integers, write a method to find indices m and n such that if you sorted elem ...