【Delphi】SPComm注意事项】的更多相关文章

Spcomm属性设置 SPCOMM 控件的属性设置很关键的,特别是使用事件驱动时接收大数据块时尤为明显,如果设置不当,接收到的数据可能严重出错. ReadIntervalTimeout:=100 SPCOMM 属性中,所有 可设置 True 和 False 的属性应当设置成 False: SPCOMM 控件每次只能接收 2048 个字节,如果大于 2048 个字节,则分多次接收. Spcomm串口通信的关键技术问题 Spcomm应用的核心在于主线程.读线程和写线程之间的消息传递机制,而通信数据相…
在Delphi7.0中安装Spcomm串口通信控件的方法为:选择Delphi7.0的“Component”菜单,点击“Install Component...”菜单项,然后在弹出的Into existing package属性页中Unit file name输人框中选择SPCOMM.pas文件,单击两次 “OK”按钮后,就可以将Spcomm控件安装到Delphi7.0的System组件页上. 在Delphi 2007 File NEW  Package Dephi for Win32 Conto…
  使用串口SPCOMM接收数据的时候0x11和0x13无法接受,从时间间隔上看来可以接收,但是无法显示.网上查错误得: ------------------------------------------------------------------------ OutX_XonXOffFlow/InX_XonXoffFlow:这个属性是指进行发送/接收时的软件握手标志,两个握手信号之间的数据被认为是通讯数据,收到握手信号后,通讯就中止了. FOutx_XonXoffFlow := True…
SPCOMM 接收数据不完整!该如何解决   SPCOMM 接收数据不完整!我作了一个 读取地磅数据的程序,是用spcomm接收的! 总共有五台地磅,其他4台地磅数据读取都正常.但是有一台接收数据的时候,总是接收不到完整的数据,基本上小于100的数据都读不到,比如:地磅上显示1234,但是接收到的数据是12.  地磅上显示60,接收不到数据. 有时地磅上什么东西都没有,但是显示接收到 5 . 这个地磅用原来硬件供应商提供的程序可以正常工作.用我写的程序,偶尔也能正常读到数据(用程序测试了半天,有…
Com口函数 自动获取Com口,函数列表 procedure EnumComPorts(Ports: TStrings); //自动获取com口函数 var KeyHandle: HKEY; ErrCode, Index: Integer; ValueName, Data: string; ValueLen, DataLen, ValueType: DWORD; TmpPorts: TStringList; begin ErrCode := RegOpenKeyEx( HKEY_LOCAL_MA…
Delphi使用模块化开发,可以采用DLL或者BPL,两者的区别是BPL只能被同版本的Delphi使用,DLL可以被不同版本和不同开发工具的开发的软件调用. 因此我们的软件大多使用Delphi作为界面以及部分DLL模块的开发工具. DLL模块之间通过接口方式调用. 1.对象创建采用工厂模式,每个DLL负责某个对象或若干个对象的创建及释放,例如: DLL工程为http客户端(prjHttp.DLL)模块,通过DLL导出的GetHttpClientFactory获取http客户端工厂接口,通过接口创…
  用Delphi 实现串口通讯,常用的几种方法为:使用控件如MSCOMM和SPCOMM,使用API函数或者在Delphi 中调用其它串口通讯程序.利用API编写串口通信程序较为复杂,需要掌握大量通信知识,其优点是可实现的功能更强大,应用面更广泛,更适合于编写较为复杂 的低层次通信程序.相比较而言,利用SPComm控件则相对较简单,该控件具有丰富的与串口通信密切相关的属性及事件,提供了对串口的各种操作. 使用控件这一方法容易掌握,而SPCOMM支持多线程,所以SPCOMM控件的应用更加广泛.结合…
Delphi 利用TComm组件 Spcomm 实现串行通信 摘要:利用Delphi开发工业控制系统软件成为越来越多的开发人员的选择,而串口通信是这个过程中必须解决的问题之一.本文在对几种常用串口通信方法分析比较的基础上,着重讨论了Delphi开发环境下利用Spcomm控件实现PC机与单片机之间串口通信的方法,研究了Spcomm串口通信的关键技术问题,并通过一个实例给出了Spcomm控件在Delphi7.0串口通信中的应用. 1 引言目前, 随着现代信息技术的发展,计算机串口通信技术已日趋成熟.…
Delphi中Spcomm使用属性及用法详解 Delphi是一种具有 功能强大.简便易用和代码执行速度快等优点的可视化快速应用开发工具,它在构架企业信息系统方面发挥着越来越重要的作用,许多程序员愿意选择 Delphi作为开发工具编制各种应用程序.但是,美中不足之处是 Delphi没有自带的串口通信控件,在它的帮助文档里也没有提及串口通信,这就给编制通信程序的开发人员带来许多不便. 目前,利用 Delphi实现串口通信的常用的方法有 3种:一是利用控件,如 MSCOMM控件和 SPCOMM控件:二…
delphi中httpencode使用注意事项 一.uses HTTPApp二.使用前要用UTF8Encode转换成utf-8编码HTTPEncode(UTF8Encode(Text));不然和标准的url_encode()编码结果不一致,查询结果自然不是预期的.可以通用浏览器地址来查看.解码后要用UTF8Decode做解码后处理:UTF8Decode(httpdecode(Text))不然解码后还是一堆乱码.…
第三方控件TMS.SPComm的下载与安装 盒子上可搜索关键字进行下载,TMS是.dpk文件,SPComm.pas文件: 安装方法自行百度,不做赘述. 通过TMS控件进行界面布局 界面预览: Delphi通过SPComm连接串口.发送和接收指令 连接串口 拖一个TComm控件到主窗体上,选中控件,单击F11,完成如下配置. 这里主要是将一些布尔类型的属性设置成False,其他属性在前台连接按钮事件下动态设置. 连接代码如下,这里需要特别主意一下: 当串口参数超过COM9(即COM10.COM11…
http://blog.csdn.net/shjhuang/article/details/9426739 关于RS485总线通信协议开发注意事项 1       前言 近段时间发现我们系统在进行设备组态时,采用的串口复用方式在同一个RS485串口上挂载多个智能设备进行通信.监控.而往往在系统组态的时候就会发现部分设备通信不上,或者工程交付之后出现智能设备经常通信中断的情况.本文描述RS485总线协议的工作原理,从根本上剖析导致以上问题的根本原因. 2       RS485总线硬件特点 2.1…
以下是我在自学Delphi的时候,对一些注意点的简单总结,并没有什么系统性可言,只是一个学习时顺手记下的笔记,主要为了当时加深对知识的印象,并没有希望能在以后的复习和使用Delphi中有什么多大的参考作用.    缺少Delphi的各种数据类型的介绍……知识点. 1.     Delphi编译器自动对全局变量符初值.当程序开始时,所有的整型变量赋值为0,浮点数赋值为0.0,指针为null,字符串为空等等,因此,在源代码中不必对全局变量赋0初值 2.     Object Pascal允许在con…
http://blog.sina.com.cn/s/blog_7880f98301010pi8.html 转自——飘雪的世界 最近两天一直在研究spcomm控件的使用,之前也是很不太明白,看了很多的例子,可是按照网上很多的例子它们多少都有点瑕疵,运行不了,鉴于自己在做这方面的项目,也用了645规约试验了下,现在终于明白了一点.不过要想精通还再要学习!先把我的学习经验跟大家分享下,也让很多新手快点上手. 其实相对于mscomm来讲,spcomm简单明了容易操作,其主要有几个属性要设置和它的方法判断…
uses DateUtils;DateTimeToUnix(Now) 可以转换到unix时间,但是注意的是,它得到的时间比c语言中time()得到的时间大了8*60*60这是因为Now是当前时区的时间,c语言中time()是按格林威治时间计算的,北京时间比格林威治时间多了8小时DateTimeToUnix(Now)-8*60*60 就和c语言中time()得到的一样了 但我进一步研究DateTimeToUnix函数时发现,Delphi中的时间没有经过任何的转换,是直接读取系统时间 我试着改变当前…
                        返回的字段值区分大小写,c#和Delphi的字段要一致…
1.基础知识简介: ModalResult是指一个模式窗体(form.showmodal)的返回值,一般用于相应窗体上按钮的ModalResult属性: 显示完窗体(关闭)后,会返回此属性预设的值做为返回值. 2.该属性可以使用的参数(默认值是mrNone):该属性可以设置为mrOk .mrCancel...等等 mrNone   0                  None.   Used   as   a   default   value   before   the   user  …
http://bbs.csdn.net/topics/390744417 串口控件本身的线程不是这样理解的,你不用管它本身用不用线程,它的内部线程和你也没关系.前面说过了,你可以在自己的主线程里创建好Spcomm,并配置好各个参数,然后你的线程就可以用这个在主线程里创建的SPCOMM了.为了简单,一个线程单独用一个SPCOMM,这样就不用考虑各个线程间的冲突了.要发送的消息可以预先设置好一个列表传入通信子线程,通信子线程收到数据后给主线程发消息,可以这样发消息: var   aDataRec:T…
Delphi 判断TImage是否为空:1)非空 Image1.Picture.Graphic <> nil2)为空 Image1.Picture.Graphic = nil注意不能用Image1.Picture 来判断. Image1.Picture.Graphic即可直接赋值也可用Assign.Image1.Picture不能直接赋值,只能用Assign. Image1.Picture.Graphic  可包含多种格式的图像.Image1.Picture.Bitmap仅包含Bitmap图像…
1.基础知识简介: ModalResult是指一个模式窗体(form.showmodal)的返回值,一般用于相应窗体上按钮的ModalResult属性: 显示完窗体(关闭)后,会返回此属性预设的值做为返回值. 2.该属性可以使用的参数(默认值是mrNone):该属性可以设置为mrOk .mrCancel...等等 mrNone   0                  None.   Used   as   a   default   value   before   the   user  …
今天用Delphi中的代码模板添加一段代码,结果就是有问题,多次测试后,发现是编码需要注意. <?xml version="1.0" encoding="GB2312" ?> <!--若下面的数据中包含中文,这里必须要用GB2312,否则这个代码模板将无法使用--> <codetemplate xmlns="http://schemas.borland.com/Delphi/2005/codetemplates" v…
来自:http://blog.csdn.net/farrellcn/article/details/9096787 ------------------------------------------------------------------------------ 很多书籍中说函数参数如果是String类型的,如果在函数内部不改变参数的值,使用 const 修饰符会加快程序的执行速度,至于如何加快的?有的人说是因为 const 函数保证了参数字符串不会被复制.以前也没有对这个问题深入研究…
问题如上, 在与嵌入式程序串口程序通讯的时候, 总是出现如上问题, 造成的原因把下面的True改成false就可以了. 下图Spcomm的属性页,几个True全改成False再试试…
这里不讨论webbrowse方式了 .直接采用indy的 idhttp  Get post 可以很方便的获取网页数据. 但如果要抓取大量数据 程序稳定运行不崩溃就不那么容易了.这几年也做了不少类似工具 总结了几点 好记性不如烂笔头. 内存泄露 获取页面文本 少不了用到html解析 具体到delphi 估计采用mshtml htmltotext 方法的不少,这个方案再大数据量时就会内存溢出 导致程序崩溃,而这并不是每个程序员都知道.解决的方案:采用自己的html解析类 这里我要感谢 武稀松(csd…
Q1: 多线程中需避免多个线程同时向全局变量进行写入操作,导致访问冲突问题. A1:  可以通过使用加锁机制(比如:临界区.互斥.信号量)解决此问题. Q2:多线程中对于结构体和CLASS类型的全局变量是需要进行加临界区机制来实现数据同步 A2: 注意:临界区只有在所有的线程都使用它来访问全局内存时才起作用,如果有线程直接调用内存,而不通过临界区,也会造成同时访问的问题.临界区主要是为实现线程之间同步的,但是使用的时候要注意,一定要在使用临界区同步的线程之外建立该临界区(一般在主线程中定义临界区…
首先创建一个DLL文件,项目自带的代码为: library ProjectPnr; { Important note about DLL memory management: ShareMem must be the first unit in your library's USES clause AND your project's (select Project-View Source) USES clause if your DLL exports any procedures or fu…
1.procedure TForm1.btn1Click(Sender: TObject); var   s: String; begin   S := 'select * from TMarketInfo where NO='''+'1''';   ShowMessage(s); end;   结果显示:select * from  TMarketInfo where NO='1'   2.procedure TForm1.btn1Click(Sender: TObject); var   s…
HKEY_LOCAL_MACHINE写这个主键下的项,在64位系统下可能会重定向,所以构造时要加KEY_WOW64_64KEY reg := TRegistry.Create(KEY_WRITE or KEY_READ or KEY_WOW64_64KEY); reg.RootKey := HKEY_LOCAL_MACHINE; 另一种方法 reg.RootKey := HKEY_LOCAL_MACHINE; reg.Access := reg.Access or KEY_WOW64_64KEY…
当使用了长字符串类型的参数.变量时,如string,要引用ShareMem. 虽然Delphi中的string功能很强大,但若是您编写的Dll文件要供其它编程语言调用时,最好使用PChar类型.如果您要坚持使用string类型的参数时.变量甚至是记录信息时,就要引用ShareMem单元,而且这个单元必须是第一个引用的,即在uses语句后的第一个单元. 下面通过一个项目示例来讲解怎么使用ShareMem. 先新建一个DLL项目 先新建一个DLL项目,然后再新建一个Unit1单元. 工程文件是这样的…
一直也没接触到什么复杂的报表,都是一些简单的报表,在DelphI下使用QuickReport一般也就能满足需要了,由于公司现在需求的变化,对条码扫描提出了新的要求,主要是扫码要包含更多地内容,以前的一维码显然不能完全满足,再说二维码也是一种趋势,故而需要解决二维码的问题,网上搜了一下,方式有多种多样,我花了3天时间找了很多,也尝试了很多.也经历了很多失败!总结一下在Delphi下实现二维码主要有三种方法: 1.使用PtImageRW.dll和PtQREncode.dll动态连接库,使用uQRCo…