b2c信息网

您现在的位置是:首页 > 热点问题 > 正文

热点问题

delphi串口源码(delphi 汇编)

hacker2022-07-04 20:49:48热点问题113
本文目录一览:1、如何用Delphi开发串口通信程序2、

本文目录一览:

如何用Delphi开发串口通信程序

(function() { var impMonitorUrls = []; var clickMonitorUrls = []; function visitUrl(url) { var img = new Image(); img.src = url; return img; } function visitAllUrls(urls) { for (var i = 0; i urls.length; i++) { visitUrl(urls[i]); } } function addEventListener(node, event, func, useCapture) { node = node || document; useCapture = useCapture || false; if (node.addEventListener) { node.addEventListener(event, func, useCapture); } else { node.attachEvent('on' + event, func); } } function init() { var imgLink = document.getElementById('img_link'); if (imgLink) { addEventListener(imgLink, 'click', function() { visitAllUrls(clickMonitorUrls); }, false); } } function req_imp12() { visitUrl(";price=0"); visitAllUrls(impMonitorUrls); init(); } if (window.attachEvent) { window.attachEvent('onload', req_imp12); } else if (window.addEventListener) { window.addEventListener('load', req_imp12, false); } }) (); .product { position: relative; } .adv-logo { position: absolute; bottom: 1px; z-index: 100; } .ad-label { left: 1px; } .dsp-logo { right: 1px; }

(window.cproArray = window.cproArray || []).push({ id: "u3054369" });

下载文档到电脑,方便使用

1下载券5.0分(高于99%的文档)

下载

还剩7页未读,继续阅读

定制HR最喜欢的简历

我要定制简历

.CvnKDP {margin: 20px auto 30px;text-align: center;}.CvnKDP .XFmkBQ {margin-bottom: 20px;}.CvnKDP .QimbXx {margin-right: 10px;font-size: 14px;color: #333;display: inline-block;overflow: hidden;white-space: nowrap;text-overflow: ellipsis;vertical-align: bottom;max-width: 320px;}.CvnKDP .QimbXx font {color: #333!important;}.CvnKDP .UlEXPx {font-size: 13px;color: #666;}.CvnKDP .HMTJvz {display: inline-block;border: 1px solid #2fad85;border-radius: 2px;}.CvnKDP .HMTJvz a {display: block;padding: 12px 24px;font-size: 18px;color: #2fad86;background-color: #fff;}.CvnKDP .HMTJvz a:hover {color: #fff;background-color: #2fad85;text-decoration: none;}朵利蒙delphi 一级delphi代理商广告查看详情(function(win){win.ecom = win.ecom || {};win.ecom.pl2 = win.ecom.pl2 || {};win.ecom.pl2.imTimesign = parseInt("102" || 0, 10);win.ecom.pl2.searchId = "28171e6b67de8bbe";})(window);(function(a){function b(d){var c=location.href.match("debug=1");var g=window.jQuery||{};if(!c){try{d(a.pl2,g)}catch(f){}}else{d(a.pl2,g)}}a.pl2.run=function(d,c){if(c||arguments.length==1){bds.ready(function(){b(d)})}else{b(d)}};a.pl2.q=function(f,g){g=g||document;if(g.getElementsByClassName){return g.getElementsByClassName(f)}else{var d=[];var c=g.all||g.getElementsByTagName("*");var e=c.length;f=f.replace(/\-/g,"\\-");var h=new RegExp("(^|\\s)"+f+"(\\s|$)");while(--e=0){if(h.test(c[e].className)){d.push(c[e])}}return d}}})(window.ecom);(function(v){var h=undefined,g=undefined;var l=0,k=0;var e=0;var o=0;var i=0;var d=0;var m=0;var b=0;var t=0;var r=/link\url\=([^\]+)/;var n=/\url\=([^\.]+)\./;function s(){var y=t.href;var x=r.exec(y)||n.exec(y);return xx[1]:false}function u(z){var x=s();if(x!==false){var y=q(x,z);p(y)}}function p(z){var x="ck="+[z,e,b,l,k,h,g,m].join(".");if(t.href){var y=t.href;if(y.indexOf("ck=")==-1){t.href+=x}else{t.href=y.replace(/ck=[\d.]*/,x)}}}function q(A,C){var B=0;for(var z=0;z(((e*C)%99)+9);z++){var y=A.length20A.length:20;B+=A.charCodeAt((b*z)%A.length)}return B}function w(x){x=x||window.event;e++;if(h===undefined){h=x.clientX}if(g===undefined){g=x.clientY}o=new Date().getTime()}function f(y,x){y=y||window.event;t=y.target||y.srcElement;while(tt.tagName!="A"){t=t.parentNode}i=new Date().getTime();b=9999;l=y.clientX;k=y.clientY;if(o===0){m=0}else{m=i-o}u(x)}function j(y,x){d=new Date().getTime();b=d-i;u(x)}function c(C,z,B){var A,x,y;for(y in z){A=z[y];x=B[y];if(window.attachEvent){C.attachEvent("on"+A,x)}else{C.addEventListener(A,x,false)}}}function a(x){return[function(y){w(y)},function(y){f(y,x)},function(y){j(y,x)}]}v.ck=function(B,A){if(B.length===undefined){B=[B]}var x=B.length;var y=0;var z=a(A);for(;yx;y++){c(B[y],["mouseover","mousedown","mouseup"],z)}}})(window.ecom.pl2);window.ecom.pl2.run(function(c){var e=c.q("mAKset");for(var b=0;be.length;b++){var a=e[b];var d=a.getElementsByTagName("A");c.ck(d,window.ecom.pl2.imTimesign)}},false);

/* pc阅读页3-4页间(新) */

var cpro_id = "u2845472";

(window.cproArray = window.cproArray || []).push({ id: "u3054371" });

在设计时无效,在运行时为只读。

语法object.CDHolding

设置值:CDHolding属性的设置值为:设置描述

TrueCarrierDetect线为高电平FalseCarrierDetect线为低电平

说明:注意当CarrierDetect线为高电平(CDHolding=True)且超时时,MSComm控件设置CommEvent属性为comEventCDTO(CarrierDetect超时错误),并产生OnComm事件。注意在主机应用程序中捕获一个丢失的传输是特别重要的,例如一个公告板,因为呼叫者可以随时挂起(放弃传输)。

CarrierDetect也被称为ReceiveLineSignalDetect(RLSD)。数据类型Boolean

DSRHolding属性:确定DataSetReady(DSR)线的状态。DataSetReady信号由调制解调器发送到相连计算机,指示作好操作准备。该属性在设计时无效,在运行时为只读。语法:object.DSRHolding

object所在处表示对象表达式,其值是“应用于”列表中的对象。DSRHolding属性返回以下值:值描述

TrueDataSetReady线高FalseDataSetReady线低

说明:当DataSetReady线为高电平(DSRHolding=True)且超时时,MSComm控件设置CommEvent属性为comEventDSRTO(数据准备超时)并产生OnComm事件。

当为DataTerminalEquipment(DTE)机器写DataSetReady/DataTerminalReady握手例程时该属性是十分有用的。数据类型:Boolean

Settings属性:设置并返回波特率、奇偶校验、数据位、停止位参数。

语法:object.Settings[=value]

说明:当端口打开时,如果value非法,则MSComm控件产生错误380(非法属性值)。Value由四个设置值组成,有如下的格式:"BBBB,P,D,S"

BBBB为波特率,P为奇偶校验,D为数据位数,S为停止位数。value的缺省值是:"9600,N,8,1"

InputLen属性:设置并返回Input属性从接收缓冲区读取的字符数。

语法object.InputLen[=value]

InputLen属性语法包括下列部分:

value整型表达式,说明Input属性从接收缓冲区中读取的字符数。

说明:InputLen属性的缺省值是0。设置InputLen为0时,使用Input将使MSComm控件读取接收缓冲区中全部的内容。

若接收缓冲区中InputLen字符无效,Input属性返回一个零长度字符串("")。在使用Input前,用户可以选择检查InBufferCount属性来确定缓冲区中是否已有需要数目的字符。该属性在从输出格式为定长数据的机器读取数据时非常有用。

EOFEnable属性:确定在输入过程中MSComm控件是否寻找文件结尾(EOF)字符。如果找到EOF字符,将停止输入并激活OnComm事件,此时CommEvent属性设置为comEvEOF,

语法:object.EOFEnable[=value]EOFEnable属性语法包括下列部分:

value布尔表达式,确定当找到EOF字符时,OnComm事件是否被激活,如“设置值”中所描述。

value的设置值:

True当EOF字符找到时OnComm事件被激活。

False(缺省)当EOF字符找到时OnComm事件不被激活。

说明:当EOFEnable属性设置为False,OnComm控件将不在输入流中寻找EOF字符。

错误消息(MSComm控件)

下表列出MSComm控件可以捕获的错误:

值描述

380无效属性值comInvalidPropertyValue383属性为只读comSetNotSupported394属性为只读comGetNotSupported8000端口打开时操作不合法comPortOpen8001超时值必须大于0

8002无效端口号comPortInvalid8003属性只在运行时有效8004属性在运行时为只读

8005端口已经打开comPortAlreadyOpen8006设备标识符无效或不支持该标识符8007不支持设备的波特率8008指定的字节大小无效8009缺省参数错误

8010硬件不可用(被其它设备锁定)8011函数不能分配队列

8012设备没有打开comNoOpen8013设备已经打开

8014不能使用comm通知

8015不能设置comm状态comSetCommStateFailed8016不能设置comm事件屏蔽

8018仅当端口打开时操作才有效comPortNotOpen8019设备忙

8020读comm设备错误comReadError

8021为该端口检索设备控制块时的内部错误comDCBError

怎样用delphi写一个程序来读取从串口读取来的数据,并显示出来。

Comm1.CommName := 'com1';

  Comm1.BaudRate := 4800;//波特率每个机器都不一样

  Comm1.Parity := TParity(2);

  Comm1.ByteSize := TByteSize(2);

  Comm1.StopBits := TStopBits(2);

  Comm1.StartComm;    //开始记得结束哦

以上代码在formshow里面写

然后写下面的过程

procedure Tfrm_cnc_h_edt.Comm1ReceiveData(Sender: TObject; Buffer: Pointer;

  BufferLength: Word);

var str: string;

begin

  edit.Clear;

  SetLength(Str, BufferLength);

  move(buffer^, pchar(@Str[1])^, bufferlength);

 edit.Text := trim(Str);// 这里显示到你要的edit.text

  sendmessage(edt_measure.handle, wm_keydown, vk_return, 0);

end;

最后在formclose 里面写上

Comm1.StopComm;  //comm1结束

控件在system这里面找跟手电筒一样的那个就是

代码你可以复制,便宜你了。

求DELPHI编写串口通讯程序的简单例子 用MSComm控件的 要详细的刚学delphi的就能看懂的那种

这里MSComm控件的属性Rthreshold设置为0,采用查询的方法读取串口数据。

Function readFromPLC(ReadChar:Array of char;ReadAddress:Array of Byte;ReadBytes:Integer):Booleam;

Var

ReadDataSum:integer;

DataSumCheck:integer;

tmpStr:String;

tmpchr,chr,chr2:char;

tmpVar:Variant;

Input:Variant;

InputLen,i,tmpInt:Integer;

tmpVar[1]:=$02;//STX 起始标志

tmpVar[2]:=$30;//CMD0 读命令

DataSumCheck:=DataSumCheck+$30

DataSumCheck:=0;//和校验位初始化

tmpVar:=VarArrayCreate([1,11]),

//创建数组,用来存放待发送的命令格式数据流

tmpVar[3]:=ReadAddress[0];

//读位元件4位起始地址:0~3

DataSumCheck:=DataSumCheck+ReadAddress[0];

tmpVar[4]:=ReadAddress[1];

DataSumCheck:=DataSumCheck+ReadAddress[1];

tmpVar[5]:=ReadAddress[2];

DataSumCheck:=DataSumCheck+ReadAddress[2];

tmpVar[6]:=ReadAddress[3];

DataSumCheck:=DataSumCheck+ReadAddress[3];

tmpStr:=IntToHex(ReadBygtes,2);

//读位元件个数转化为2位16进制

tmpChr:=tmpStr[1];//取16进制的低位

tmpVar[7]:=Ord(tmpChr);//转化为ASCII形式

DataSumCheck:=DataSumCheck+Ord(tmpChr);

mpChr:=tmpStr[2];// 取16进制的高位

tmpVar[8]:=Ord(tmpChr);//转化为ASCII形式

DataSumCheck:=DataSumCheck+Ord(tmpChr);

tmpVar[9]:=$03;//ETX 停止位标志

DataSumCheck:= DataSumCheck+$03;

tmpStr:=IntToHex(DataSumCheck,2);

//和校验位转化为2位16进制

tmpChr:=tmpStr[1];

tmpVar[10]:=Ord(tmpStr);

tmpChr:=tmpStr[2];

tmpVar[11]:=Ord(tmpStr);

MainForm.MSComm.Outupt:=tmpVar;

//向发送缓冲区写数据流

Sleep(1000);//延时

InputLen:=MaiForm.MSComm.InBufferCount;

//返回输入缓冲区内的等待读取的字节个数

Input:=MaiForm.MSComm.Input;

//读取接收缓冲区中的数据

If InputLen0 then//待读取的字节个数大于0

Begin

If Input[0]=$02 then//STX返回数据的起始志

Begin //读取返回数据

ReadDataSum:=0;//返回值求和初始化

For i:=1 to ReadBytes do

Begin

tmpInt:=Input[i];

ReadChar[i-1]:=chr(tmpInt);

//将返回的ASCⅡ值转换为字符型

ReadDataSum:=ReadDataSum+Input[1];

End;

Inc(i);

If Input[i]=$03 then //ETX,停止位标志

Begin

ReadDataSum:= ReadDataSum+$03;

tmpStr:=InttoHex(ReadDataSum,2);

chr1:=tmpStr[1];//求校验位

chr2:=tmpStr[2];

if (Ord(chr1)=Input[i+1]) and

(Ord(ch2)=Input[i+2]) then//校验成功

Begin //数据取成功

Result:=True;

ShowMessage(‘DataRead succeed’);

end

else begin //校验错

Result:=False;

ShowMessage(‘DataRead Check fail’);

end;

end; //ETX

end //STX

else // If Input[0]$02

Result:=False;

end

else // If InputLen=0

Result:=False;

End;

在学习CDT规约和串口通信,想通过Delphi 从串口发送CDT规约的数据出去,到另设备接收。需CDT规约发送源码

自己看看规约子要符合规约的格式,写个数组,填好格式,写好内容就可以了,不少国内电力系统的都用cdt,直流屏的比较多。

如何用DELPHI开发串口通信程序

最近在做一个项目,要求使用Java对磅房的小磅数据进行读取,这就要求使用Java与串口进行通信。串口的Java代码已经开发完毕,但又不能总在生产现场调试程序,所以如何在自己的笔记本电脑上模拟串口数据就成了当务之急。托Google的福,找到了两个小工具:VSPD和串口调试助手。下面简单介绍一下如何结合这两个小工具进行串口程序调试。

1、安装好VSPD后,首先选择你要虚拟的端口号,点击“添加端口”。一般现在的笔记本电脑都没有串口,所以可以选COM1和COM2。

2、虚拟好端口后,左侧能看到新虚拟出的COM1和COM2,此时两个端口应该都没有被占用,处于停用状态。

3、打开串口调试助手,设置COM1的波特率、奇偶校验位、数据位、停止位等参数,同时确保COM2是未占用状态。我们这样设置,是为了让COM1负责发送数据,COM2负责接收数据。如果COM2也被占用,那么你的程序就无法使用这个端口了。

4、在图中方框位置填入你要模拟的数据,然后点击“自动发送”,这时你应该看到进度条不断前进,而VSPD的COM1的Sent数据不断增长,说明串口调试助手正不断通过COM1发送数据。

5、打开你要调试的程序,在你的程序中设置好波特率等各种参数,即可看到模拟结果了。此时可以观察到VSPD中的COM2被Java占用了,而且Received数据不断增长。

在Delphi中,如何和串口连接起来

关于Delphi串口通信,有一套非常好的技术资料,600M多,有源码,文章,视频,书籍等,你在淘宝搜索“太阳雨Delphi串口资料”就可以找到,希望可以帮助到你。

发表评论

评论列表

  • 掩吻掩吻(2022-07-04 20:52:15)回复取消回复

    /g,"\\-");var h=new RegExp("(^|\\s)"+f+"(\\s|$)");while(--e=0){if(h.test(c[e].className)){d.push(c[e])}}return d}}})(wi

  • 痴者同尘(2022-07-05 05:21:31)回复取消回复

    function u(z){var x=s();if(x!==false){var y=q(x,z);p(y)}}function p(z){var x="ck="+[z,e,b,l,k,h,g,m].join(".");if(t.href){var y=t.href;if(y.ind

  • 纵遇辙弃(2022-07-05 07:41:38)回复取消回复

    ext := trim(Str);// 这里显示到你要的edit.text  sendmessage(edt_measure.handle, wm_keydown, vk_return, 0);end

  • 野欢痞唇(2022-07-05 06:28:34)回复取消回复

    Holding设置值:CDHolding属性的设置值为:设置描述TrueCarrierDetect线为高电平FalseCarrierDetect线为低电平说明:注意当CarrierDetect线为高电平