VB控件Mscomm控件与PLC进行RSModbus通讯源码

VB控件Mscomm控件与PLC进行RSModbus通讯源码
VB控件Mscomm控件与PLC进行RSModbus通讯源码

V B控件M s c o m m控件与P L C进行

R S M o d b u s通讯源码集团企业公司编码:(LL3698-KKI1269-TM2483-LUI12689-ITT289-

V B控件M s c o m m控件与P L C进行R S485(M o d b u s)通讯源码本人用的是ModbusRTU通讯模式,通过计算机串口转RS485与外围设备通行通讯,读写外围设备指定地址里的数据,从而达到自动化控制远端设备。

DimHiByteAsByte

DimLoByteAsByte

DimCRC16LoAsByte

DimCRC16HiAsByte

DimReturnData(1)AsByte

DimKAsInteger

DimCmdLenthAsInteger

PrivateSubCommand1_Click()

K=Text9.Text'写6个字节

Text13.Text=""

'===========数组赋值输入代码

=============================================================== ========================

'<<算法一>>

DimWriteStr()AsByte

DimuAsInteger

ReDimWriteStr(K+2)

Foru=0ToK

WriteStr(u)=Val("&H"&Text1(u).Text)

Next

'<<算法二>>

DimCRC_2()AsByte

DimvAsInteger

ReDimCRC_2(K)

Forv=0ToK

CRC_2(v)=Val("&H"&Text1(v).Text)

Next

'============================================================== ====================================

CallCRC161(CRC_2())

CallCRC16(WriteStr(),K)

MSComm1.InBufferCount=0

'==========显示发送代码

=============================================================== =========================

DimmAsInteger

Form=0To23

Ifm<=KThen

Text8(m).Text=Hex(WriteStr(m))

Else

Text8(m).Text=""

EndIf

Next

'============================================================== ====================================

WriteStr(K+1)=LoByte

WriteStr(K+2)=HiByte

'发送代码

Text4.Text=""

DimgAsInteger

Forg=0ToK+2

Text4.Text=Text4.Text+""+Hex(WriteStr(g))

Next

'写命令发送后,当接收到8个字节时中断

CmdLenth=8

MSComm1.RThreshold=CmdLenth

MSComm1.Output=WriteStr

EndSub

PrivateSubCommand2_Click()

End

EndSub

PrivateSubCommand3_Click()

Label34.Caption="="

Text13.Text=""

K=Text9.Text'写6个字节

'===========数组赋值输入代码

=============================================================== ========================

'<<算法>>

DimCRC_2()AsByte

DimvAsInteger

ReDimCRC_2(K)

Forv=0ToK

CRC_2(v)=Val("&H"&Text1(v).Text)

Next

'============================================================== ====================================

CallCRC161(CRC_2())

CallCRC16(WriteStr(),K)

MSComm1.InBufferCount=0

'==========显示发送代码

=============================================================== =========================

DimmAsInteger

Form=0To23

Ifm<=KThen

Text8(m).Text=Hex(WriteStr(m))

Else

Text8(m).Text=""

EndIf

Next

'============================================================== ====================================

WriteStr(K+1)=LoByte

WriteStr(K+2)=HiByte

'发送代码

Text4.Text=""

DimgAsInteger

Forg=0ToK+2

Text4.Text=Text4.Text+""+Hex(WriteStr(g))

Next

'读命令发送后,当接收5+SendStr(5)*2个字节时产生中断

CmdLenth=5+WriteStr(5)*2

MSComm1.RThreshold=CmdLenth

MSComm1.Output=WriteStr'发送命令

'************************************************************** *************************************************************** ***********

'************************************************************** *****************************************************

'************************************************************** *************************************************************** ***********

'DimsAddrAsString

'

'DimCheckStringAsString

'DimCheckCodeAsString

'DimCmdCodeAsString

'DimSumAsInteger

'DimaAsInteger

'DimtmpAsString

'a=0

'tmp=0

'

'

'

'DoWhileLen(tmp)<8

'

'tmp=tmp+MSComm1.Input

'testNO.Caption=testNO.Caption+""+Str(Hex(Asc(tmp)))

'a=a+1

'Ifa>=3000Then

'MSComm1.PortOpen=False

'ExitFunction

'ExitDo

'EndIf

'Loop

'Label33.Caption=tmp

'Text16.Text=Len(tmp)

'DimnsAsInteger

'Forns=1ToLen(tmp)

'Label34.Caption=Label34.Caption+"+"+Str(Asc(Mid(tmp,ns,1))) '

'Next

'Label35.Caption=Str(Val(Asc(Mid(tmp,6,1)))/10)

'

'

'tmp=Mid$(tmp,6,4)

'

'

'DimstrHexAsString

'DimHex2DecAsLong

'DimstrTmpAsString

'DimlongTmpAsLong

'DimlongDecAsLong

'DimintLenAsInteger

'Dimn1AsInteger

'

'strHex=Right$(tmp,2)+Left$(tmp,2) '

'intLen=Len(strHex)

'Forn1=1TointLen

'strTmp=Mid(strHex,n1,1)

'SelectCaseAsc(strTmp)

'Case48To57

'longTmp=Val(strTmp)

'Case65To70

'longTmp=Asc(strTmp)-55

'CaseElse

'Hex2Dec=0

''ExitFunction

'EndSelect

'Text13.Text=Text13.Text+"+"+Str(Asc(strTmp))

'longDec=longDec+longTmp*16^(intLen-n1)

'Nextn1

'

'Hex2Dec=longDec

'Text13.Text=Hex2Dec

'************************************************************** *************************************************************** ***********

'************************************************************** *****************************************************

'************************************************************** *************************************************************** ***********

EndSub

PrivateSubMSComm1_OnComm()

DimNeAsInteger

https://www.360docs.net/doc/076583239.html,mEvent

CasecomEvReceive

DimBufferAsVariant

MSComm1.InputMode=comInputModeBinary

MSComm1.InputLen=0

Buffer=MSComm1.Input

ForNe=LBound(Buffer)ToUBound(Buffer)

Text13.Text=Text13.Text&"+"&Buffer(Ne)

Label34.Caption=Buffer(3)&""&Buffer(4)

NextNe

CaseElse

EndSelect

Beep

EndSub

PrivateSubCommand4_Click()

EndSub

PrivateSubCommand5_Click()

Label34.Caption="="

EndSub

PrivateSubForm_Load()

MSComm1.Settings="9600,N,8,1"

https://www.360docs.net/doc/076583239.html,mPort=1

MSComm1.SThreshold=0

IfNotMSComm1.PortOpenThenMSComm1.PortOpen=True EndSub

PrivateSubTimer1_Timer()

'显示<<算法一>>结果

Text2.Text=Hex(HiByte)

Text3.Text=Hex(LoByte)

'显示<<算法二>>结果

Text6.Text=Hex(CRC16Hi)

Text7.Text=Hex(CRC16Lo)

IfText5.Text<>""Then'十进制转十六进制

Text10.Text=Hex(Text5.Text)

EndIf

IfText11.Text<>""Then'十六进制转十进制

Text12.Text=Val("&H"&Text11.Text)

EndIf

Text14.Text=MSComm1.OutBufferCount

EndSub

'==========CRC校验<<算法

二>>=========================================================== =============================

FunctionCRC161(data()AsByte)AsString'CRC计算函数

'DimCRC16LoAsByte,CRC16HiAsByte'CRC寄存器

DimCLAsByte,CHAsByte'多项式码&HA001

DimSaveHiAsByte,SaveLoAsByte

DimIAsInteger

DimFlagAsInteger

CRC16Lo=&HFF

CRC16Hi=&HFF

CL=&H1

CH=&HA0

ForI=0ToUBound(data)

CRC16Lo=CRC16LoXordata(I)'每一个数据与CRC寄存器进行异或ForFlag=0To7

CRC16Hi=CRC16Hi\2'高位右移一位

CRC16Lo=CRC16Lo\2'低位右移一位

If((SaveHiAnd&H1)=&H1)Then'如果高位字节最后一位为1

CRC16Lo=CRC16LoOr&H80'则低位字节右移后前面补1

EndIf'否则自动补0

If((SaveLoAnd&H1)=&H1)Then'如果LSB为1,则与多项式码进行异或CRC16Hi=CRC16HiXorCH

CRC16Lo=CRC16LoXorCL

EndIf

NextFlag

NextI

DimReturnData(1)AsByte

ReturnData(0)=CRC16Hi'CRC高位

ReturnData(1)=CRC16Lo'CRC低位

asd=Right("00"+Hex(CRC16Lo),2)+Right("00"+Hex(CRC16Hi),2) EndFunction

PrivateSubmscomm_OnComm()

EndSub

mscomm控件的使用和安装

一、引言 目前,在用计算机进行数据传输时,常用的是串行通信方式。用C++Builder来编写串行通信程序时,可以调用Windows API函数,也可以利用VB中的MSComm控件。利用API函数编写实际应用程序时,往往要考虑多线程的问题,这样编出来的程序不但十分庞大,而且结构比较复杂,继承性差,维护困难。但是使用串行通信控件就相对简单一些,而且功能强大,性能安全可靠。本文就简单的介绍一下在C++ Builder中利用MSComm 控件进行编程。 二、MSComm控件的常用属性和事件 MSComm 控件通过串行端口传输和接收数据,为应用程序提供串行通讯功能。具体的来说,它提供了两种处理通信问题的方法:一是事件驱动(Event-driven)方法,一是查询法。 事件驱动方式 在使用事件驱动法设计程序时,每当有新字符到达,或端口状态改变,或发生错误时,MSComm控件将解发OnComm事件,而应用程序在捕获该事件后,通过检查MSComm控件的CommEvent属性可以获知所发生的事件或错误,从而采取相应的操作。这种方法的优点是程序响应及时,可靠性高。 查询方式 查询方式实质上还是事件驱动,但在有些情况下,这种方式显得更为便捷。在程序的每个关键功能之后,可以通过检查CommEvent 属性的值来查询事件和错误。如果应用程序较小,并且是自保持的,这种方法可能是更可取的。 1.MSComm 控件的常用属性 CommPort属性:设置或返回通讯端口号,可以设置为1到16之间的任何值,本系统采用缺省值2; Settings属性:以字符串形式设置或返回波特率、奇偶校验、数据位和停止位,本系统采用缺省值"9600,n,8,1"; PortOpen属性:设置或返回通讯口的状态以及打开和关闭端口,可通过把该属性设置为true或者false来打开或者关闭端口; InBufferSize和OutBufferSize属性:分别设置接收和发送缓冲区分配的内存数量,单位为字节,缺省值分别为1024byte和512byte; InputLen属性:确定希望从接收缓冲区移出的字符数量,当InputLen=0时,一次把接收缓冲区的字符全部移出;

短信转移业务操作使用手册中国移动通信

中国移动通信有限公司短信过滤客服FAQ 文档

1 短信过滤最常见问题 (2) Q:是否可以过滤SP发来的短信? (2) Q:过滤条件的优先级是什么? (2) Q:关键字可以设置几组? (2) Q:黑白名单是否可以同时使用?生效方式如何查询及修改? (2) 2 短信过滤FAQ (3) Q:什么是短信过滤业务? (3) Q:短信过滤业务的业务类型是什么? (3) Q:短信过滤业务的业务状态是什么?及状态的查询修改方式有哪些? (3) Q:短信过滤业务的业务分类有哪些? (3) Q:短信过滤业务的使用范围是什么? (3) Q:短信过滤业务对终端类型有无特殊限定? (4) Q:如何办理短信过滤业务? (4) Q:如何通过短信指令暂停短信过滤业务? (4) Q:如何通过短信指令激活短信仓库过滤? (4) Q:如何通过短信指令查询短信过滤的状态? (4) Q:如何个性化设置短信过滤策略? (4) Q:短信过滤策略中的优先处理级别是怎样的? (4) Q:如何查看我已过滤了哪些短信? (4) Q:短信过滤业务中的白名单生效方式是什么意思? (4) Q:短信过滤业务中的黑名单生效方式是什么意思? (4) Q:短信过滤业务的优点有哪些? (5) 附录1:技术支持联系方式............................................................................................... 错误!未定义书签。 附录2:短信过滤短信指令列表 (5)

1 短信过滤最常见问题 Q:是否可以过滤SP发来的短信? A:可以。将不想接收其短信的SP号码设置为黑名单号码,即可将此SP发来的短信过滤掉。 Q:过滤条件的优先级是什么? A:对于各种过滤逻辑的条件设定和处理逻辑优先级描述如下: 1.按照关键字过滤具有最高的优先级 2.按照指定时段过滤优先级次之 3.黑、白名单的优先级最小,且黑、白名单只能选其一 Q:关键字可以设置几组? A:DCS默认的关键字个数是10组。每组关键字的最大长度为:10个英文字符或3个汉字。 Q:黑白名单是否可以同时使用?生效方式如何查询及修改? A:黑白名单不可同时使用。黑/白名单在同时只能有一种在生效。 系统在开通短信过滤业务时,默认使用黑名单方式。用户可以通过Web方式登录吉林移动WWW网站网上营业厅,点击黑/白名单管理,就可查询到当前生效的名单类型。点击“切换名单生效类型”按钮可以修改当前的生效类型。切换名单生效类型时不会删除另一份名单中的号码:如当前为黑名单,切换生效类型为白名单,原有的黑名单号码列表不会被删除。当用户再次切换到黑名单生效类型时,原有黑名单可继续使用。

中国移动指定代码大全发送至10086

中国移动指定代码大全(发送至 10086) 以下是各项业务开通和取消方式: 类别发送代码 HF业务功能 实时话费查询 HF# YYYMM往月帐单查询 话费积分查询JF YECX LS#mm CXZD KTFX KTL CXP 热点业务办理KTGJHY KTCXTC#1 KTSWTC#5 KTHBGJ KTYYTH KTL QXL

KTDXTC#积分查询 套餐使用额度查询缴费历史查询 话费提醒(帐单)定制开通飞信开通来电提醒开通手机报无线音乐俱乐部高级会员开通彩信1 元套餐 开通GPRS5元套餐 号薄管家 开通125 93一元特惠包来电提醒 来电提醒取消 5 元短信套餐开通 KTDXTC#101元短信套餐开通 KTDXTC#151元短信套餐开通 新业务办理QXDXTC KTCLTC#5 KTCLTC#10 QXCLTC KTCXTC#1 KTCXTC#3 KTCXTC#短信套餐取消 彩铃5元套餐开通彩铃10 元套餐开通彩铃套餐取消 彩信1 元套餐开通 彩信3 元套餐开通

彩信5元套餐开通 QXCXTC KTSWTC QXSWTC QXYDMS KTYYTH QXYYTH KTCHYH QXCHYH KTMYYH QXMYYH MWDG MWCX MMGL 客户服务XXCX HM 彩信套餐取消 5元GPRS套餐开通 GPRS套餐取消取消移动秘书 12593 一元特惠包开通 12593 一元特惠包取消国内9 元长话优惠包开通国内9 元长话优惠包取消区内9 元漫游优惠包开通区内9 元漫游优惠包

取消梦网业务订购已定制梦网查询密码管理常用信息查询查询号码归属地

中国移动短信指令大全

1.发送CXBX到10086,查询当月套餐剩余短信条数。 2.发送CXGFX到10086,查询当月飞信GPRS套餐剩余流量。 3.发送CXGTC到10086,查询当月GPRS套餐剩余流量。 4.发送CXCCT到10086,查询当月超级畅听套餐剩余流量。 5.发送CXGLL到10086,查询当月已使用的GPRS流量总和。 6.发送CXDX120,查询当月可选计划“短信120”剩余短信条数。 7.发送CXDX500,查询当月可选计划“短信500”剩余短信条数。 8.发送CXCXB,查询当月可选计划“彩信包”剩余彩信条数。 9.发送CXIP1000,查询当月可选计划“IP1000”剩余通话时长。 10.发送CXMDX,查询M计划兑换的“短信包(50条/月)”当月剩余短信条数。 11.发送CXMCX,查询M计划兑换的“彩信包(10条/月)”当月剩余彩信条数。 12.发送CXMG,查询M计划兑换的“10M/月的GPRS流量”剩余流量。 信指令短信发送端口办理业务 YE/CXYE 10086 余额查询 KTFX 10086 开通飞信

QXFX 10086 取消飞信 BLHZ 10086 开通短信回执 QXHZ 10086 取消短信回执 BLYY19 10086 办理19元音乐卡套餐BLYY29 10086 ....办理29元音乐卡套餐BLYY39 10086 办理39元音乐卡套餐BLYY59 10086 办理59元音乐卡套餐GPRS5 . 10086 办理GPRS5元套餐GPRS20 10086 办理GPRS20元套餐GPRS50 10086 办理GPRS50元套餐GPRS100 .10086 办理GPRS100元套餐GPRS200 .10086 办理GPRS200元套餐 信指令短信发送端口办理业务 CXGPRS5 .10086 查询GPRS5元套餐CXGPRS20 10086 查询GPRS20元套餐CXGPRS50 10086 查询GPRS50元套餐CXGPRS100 10086 ....查询GPRS100元套餐CXGPRS200 10086 ....查询GPRS200元套餐

使用VB中的MSComm控件实现串口通信

使用VB中的MSComm控件实现RS-232串口通信 实验准备:需要准备一些与串口通信有关的设备,如(外置式)调制解调器、计算机串口与调制解调器的连接线、一根DTE到DTE的无调制解调器连接线(接法见本章有关习题的参考答案),在实验前检查计算机的两个串口是否能够正常工作。 实验环境:Windows 95/98操作系统,Microsoft VB 5.0以上程序设计环境。对例题中涉及调制解调器的内容,采用计算机与调制解调器连接的方式;对在例题中 VB (1 (CD) (2 来查询事件和错误。如果应用程序较小,并且是自保持的,这种方法可能是更可取的。例如,如果写一个简单的电话拨号程序,则没有必要对每接收一个字符都产生事件,因为唯一等待接收的字符是调制解调器的“OK”响应。 每个使用的MSComm控件都对应着一个串行端口。如果应用程序需要访问多个串行端口,必须使用多个MSComm控件。可以在Windows“控制面板”中改变端口地址和 中断地址。

下面这个简单的例子采用了轮询方法演示了用调制解调器进行基本的串行通讯: Private Sub Form_Load() Dim Instring As String '保存输入子串的缓冲区 https://www.360docs.net/doc/076583239.html,mPort=3 '使用COM3。 MSComm1.Settings="2400,N,8,1" '2400波特率,无奇偶校验,8位数据位,一位停止位 下面我们将讲述一下MSComm控件的所有属性,其中前5个是最基本的,必须首先 掌握。 ⑴MsComm控件属性 1)CommPort,设置并返回通讯端口号。语法为: https://www.360docs.net/doc/076583239.html,mPort[=value]

VB控件Mscomm控件与PLC进行RSModbus通讯源码

V B控件M s c o m m控件与P L C进行 R S M o d b u s通讯源码集团企业公司编码:(LL3698-KKI1269-TM2483-LUI12689-ITT289-

V B控件M s c o m m控件与P L C进行R S485(M o d b u s)通讯源码本人用的是ModbusRTU通讯模式,通过计算机串口转RS485与外围设备通行通讯,读写外围设备指定地址里的数据,从而达到自动化控制远端设备。 DimHiByteAsByte DimLoByteAsByte DimCRC16LoAsByte DimCRC16HiAsByte DimReturnData(1)AsByte DimKAsInteger DimCmdLenthAsInteger PrivateSubCommand1_Click() K=Text9.Text'写6个字节 Text13.Text="" '===========数组赋值输入代码 =============================================================== ======================== '<<算法一>> DimWriteStr()AsByte DimuAsInteger ReDimWriteStr(K+2)

Foru=0ToK WriteStr(u)=Val("&H"&Text1(u).Text) Next '<<算法二>> DimCRC_2()AsByte DimvAsInteger ReDimCRC_2(K) Forv=0ToK CRC_2(v)=Val("&H"&Text1(v).Text) Next '============================================================== ==================================== CallCRC161(CRC_2()) CallCRC16(WriteStr(),K) MSComm1.InBufferCount=0 '==========显示发送代码 =============================================================== ========================= DimmAsInteger Form=0To23 Ifm<=KThen Text8(m).Text=Hex(WriteStr(m))

中国移动业务代码大全教学文案

中国移动业务代码大 全

移动业务代码大全 1.发送CXBX到10086,查询当月套餐剩余短信条数。 2.发送CXGFX到10086,查询当月飞信GPRS套餐剩余流量。 3.发送CXGTC到10086,查询当月GPRS套餐剩余流量。 4.发送CXCCT到10086,查询当月超级畅听套餐剩余流量。 5.发送CXGLL到10086,查询当月已使用的GPRS流量总和。 6.发送CXDX120,查询当月可选计划“短信120”剩余短信条数。 7.发送CXDX500,查询当月可选计划“短信500”剩余短信条数。 8.发送CXCXB,查询当月可选计划“彩信包”剩余彩信条数。 9.发送CXIP1000,查询当月可选计划“IP1000”剩余通话时长。 10.发送CXMDX,查询M计划兑换的“短信包(50条/月)”当月剩余短信条数。 11.发送CXMCX,查询M计划兑换的“彩信包(10条/月)”当月剩余彩信条数。 12.发送CXMG,查询M计划兑换的“10M/月的GPRS流量”剩余流量。

信指令短信发送端口办理业务 YE/CXYE 10086 余额查询 KTFX 10086 开通飞信 QXFX 10086 取消飞信 BLHZ 10086 开通短信回执 QXHZ 10086 取消短信回执 BLYY19 10086 办理19元音乐卡套餐BLYY29 10086 ....办理29元音乐卡套餐BLYY39 10086 办理39元音乐卡套餐BLYY59 10086 办理59元音乐卡套餐GPRS5 . 10086 办理GPRS5元套餐GPRS20 10086 办理GPRS20元套餐GPRS50 10086 办理GPRS50元套餐

C#串口通信:MSComm控件使用详解

C#串口通信:MSComm控件使用详解 目次 MSComm 控件两种处理通讯的方式 CommPort 属性 RThreshold 属性 CTSHolding 属性 SThreshold 属性 CDHolding 属性 DSRHolding 属性 Settings 属性 InputLen 属性 EOFEnable 属性 Handshake 常数 OnComm 常数 InputMode 常数 错误消息 MSComm 控件通过串行端口传输和接收数据,为应用程序提供串行通讯功能。MSComm控件在串口编程时非常方便,程序员不必去花时间去了解较为复杂的API函数,而且在VC、VB、Delphi 等语言中均可使用。Microsoft Communications Control(以下简称MSComm)是Microsoft公司提供的简化Windows下串行通信编程的ActiveX控件,它为应用程序提供了通过串行接口收发数据的简便方法。具体的来说,它提供了两种处理通信问题的方法:一是事件驱动(Event-driven)方法,一是查询法。 1.MSComm控件两种处理通讯的方式 MSComm控件提供下列两种处理通讯的方式:事件驱动方式和查询方式。 1.1 事件驱动方式 事件驱动通讯是处理串行端口交互作用的一种非常有效的方法。在许多情况下,在事件发生时需要得到通知,例如,在串口接收缓冲区中有字符,或者Carrier Detect (CD) 或Request To Send (RTS) 线上一个字符到达或一个变化发生时。在这些情况下,可以利用MSComm 控件的OnComm 事件捕获并处理这些通讯事件。OnComm 事件还可以检查和处理通讯错误。所有通讯事件和通讯错误的列表,参阅CommEvent 属性。在编程过程中,就可以在OnComm事件处理函数中加入自己的处理代码。这种方法的优点是程序响应及时,可靠性高。每个MSComm 控件对应着一个串行端口。如果应用程序需要访问多个串行端口,必须使用多个MSComm 控件。 1.2 查询方式 查询方式实质上还是事件驱动,但在有些情况下,这种方式显得更为便捷。在程序的每个关键功能之后,可以通过检查CommEvent 属性的值来查询事件和错误。如果应用程序较小,并且是自保持的,这种方法可能是更可取的。例如,如果写一个简单的电话拨号程序,则没有必要对每接收一个字符都产生事件,因为唯一等待接收的字符是调制解调器的“确定”响应。 2.MSComm 控件的常用属性 MSComm 控件有很多重要的属性,但首先必须熟悉几个属性。 CommPort 设置并返回通讯端口号。 Settings 以字符串的形式设置并返回波特率、奇偶校验、数据位、停止位。 PortOpen 设置并返回通讯端口的状态。也可以打开和关闭端口。 Input 从接收缓冲区返回和删除字符。 Output 向传输缓冲区写一个字符串。 下面分别描述:

Mscomm控件属性、方法及事件

Mscomm控件 1、引用Mscomm控件 Mscomm控件不是普通的工具箱控件,在VB中首先要引用Mscomm控件,而后才能使用用它。 引用Mscomm控件很简单:选择“工程”主菜单,在“工程”菜单上选择“部件”命令,弹出如图所示的部件对话框,在控件属性页上选定“Microsoft Comm Control 6.0”控件,单击“确定”按钮后,Mscomm就添加到控件面板上。 2、Mscomm控件信息处理 Mscomm控件拥有功能完善的串口数据的发送和接收功能,Mscomm控件提供了两种处理方式。 ●事件驱动方式:由Mscomm控件的OnComm事件自动捕获并处理通信错误及事件; ●查询方式:通过定时查询Mscomm控件CommEvent属性的值来判断事件和错误。 在PC机串行端口通信时,使用了十几条线进行信号传输。利用Mscomm控件开发串口通信软件,需了解以下5条线的代号及作用,这5条线的高低电平状态分别对应Mscomm 控件的相应属性的True/False值: ●DRT线:用于传输PC机发往串口Modem等设备的信号,该信号表示PC机是否已准备好; ●RTS线:用于传输PC机发往串口Modem等设备的信号,该信号表示PC机是否允许Modem发数据; ●DSR线:用于传输串口Modem等设备发往PC机的信号,该信号表示串口Modem 等设备是否已做好操作准备;

●CTS线:用于传输串口Modem等设备发往PC机的信号,该信号表示Modem是否允许发送数据; ●CD线:用于传输串口Modem等设备发往PC机的信号,该信号表示Modem已经和远方的设备建立了连接。 Mscomm控件的通信功能实现,实际上是调用了API函数,而API函数是由Comm.drv 解释并传给设备驱动程序执行的,对于VB程序开发者只需要知道MSComm控件的属性和事件的用法即可以实现对串口的操作。 3、Mscomm控件的属性 (1)CommPort属性 该属性用于设置或返回连接的串口编号,Windows将会利用该串口和外界通信。CommPort属性值用1、2……表示串口COM1、COM2...,其取值范围为1~6,缺省值为1。MSComm控件支持的最大串口号是16,系统会通知出错,并返回前一次设定的值。 (2) Settings属性 该属性用于设置或返回通信参数,属性值用字符串表示,主要设定波特率、奇偶检验、数据位数,停止位等4个参数。组成格式为: “BBBB,P,D,S” 其中BBBB为波特率,P为奇偶校验,D为数据位数,S为停止位数。默认值为“19200,N,8,1”,表示传输速率19200bit/s,无奇偶校验位,8位数据位,1位停止位。 波特率的合法值可以是110、300、600、1200、2400、4800、9600(默认)、14400、19200、28800、38400、56000、57600、115200、128000、256000。 奇偶校验的值可以设置为如下表所示的值之一。 奇偶校验设定值 数据位的值可以是4、5、6、7、8(默认值)。 停止位的值可以是1(默认值)、1.5、2。 只有当通信的双方的Settings属性值都一样,通信连接才有效。 (3) Handshaking属性 该属性用于设置或返回硬件握手协议,即PC机与通信设备(如Modem)之间为了控制流速而约定的内部协议,属性值可以设置为如下表中的值。

中国移动 短信营业厅功能代码一览表 (代码发10086)

短信营业厅功能代码一览表:业务类型及数字代码拼音指令1.话费、优惠及月账单查询101查询当前话费总额/余额CXHF或CXYE 102查询上月账单CXSYZD 103查询当月及历史帐单CXZD#yymm 104查询已用优惠1041查询已用优惠金额CXYH#1 1042查询已用优惠时长、短信及V网时长CXYH#2 105查询已用移动数据流量CXYYSJLL 106余额提醒1061开通余额提醒KTYETX#xx.xx(金额) 1062取消余额提醒QXYETX 1063介绍余额提醒JSYETX 1064状态查询CXYETX 107定制电子账单1071定制短信账单DZZD 1072取消短信账单QXZD 1073定制彩信账单DZCXZD 1074取消彩信账单QXCXZD 1075介绍电子账单JSDZZD 1076状态查询CXDZZD 108查询缴费历史CXJFLS 2.查询已开通业务及服务密码办理201查询本机资费产品CXCP 202查询已开通业务CXYW 203服务密码2031密码申请SQMM#[身份证号码] 2032密码修改BGMM#[原密码]#[新密码] 2033密码重置CZMM#[身份证号码] 2034介绍服务密码JSMM 204查询有效期CXYXQ 205查询信誉度CXXYD 206查询归属地CXGSD#[手机号码] 207查询积分CXJF 210我的10086个性化菜单功能2101开通我的10086KT10086

2102取消我的10086QX10086 2103介绍我的10086JS10086 3.来电显示、彩玲、GPRS等业务办理301来电显示3011开通来电显示KTLDXS 3012取消来电显示QXLDXS 3013介绍来电显示JSLDXS 3014状态查询CXLDXS 302彩铃3021开通彩铃KTCL 3022取消彩铃QXCL 3023介绍彩铃JSCL 3024状态查询CXCL 303移动数据流量套餐3031开通移动数据流量标准资费KTSJLL#BZ 3032开通移动数据流量5元资费KTSJLL#5 3033开通移动数据流量20元资费KTSJLL#20 3034开通移动数据流量50元资费KTSJLL#50 3035开通移动数据流量100元资费KTSJLL#100 3036开通移动数据流量200元资费KTSJLL#200 3037取消移动数据流量套餐QXSJLL 3038移动数据流量套餐资费介绍30381介绍移动数据流量标准资费JSSJLLBZ 30382介绍移动数据流量5元资费JSSJLL5 30383介绍移动数据流量20元资费JSSJLL20 30384介绍移动数据流量50元资费JSSJLL50 30385介绍移动数据流量100元资费JSSJLL100 30386介绍移动数据流量200元资费JSSJLL200 3039状态查询CXSJLL 304来电提醒3041开通来电提醒KTLDTX 3042取消来电提醒3042取消来电提醒QXLDTX 3043介绍来电提醒JSLDTX 3044状态查询3044状态查询CXLDTX 305飞信3051开通飞信KTFX 3052取消飞信3052取消飞信QXFX

MSComm控件使用详解

MSComm控件使用详解 2008-04-06 19:15:39| 分类:Windows编程|举报|字号订阅 MSComm控件使用详解 MSComm控件的常用属性 1.MSComm1.Settings:=’9600,n,8,1’; //设置波特率,校验位,数据位,停止位 Settings属性: 设置串口的波特率,校验位,数据位,停止位, ’9600,n,8,1’表示波特率为9600,无奇偶校验,数据位为8为,1位停止位 MSComm1.InBufferSize:=1024; // 接受缓冲区大小 InBufferSize 属性:接收缓冲区的大小,默认值为1024,也可以自己设定,比如, MSComm1.InBufferSize:=2000,则接收缓冲区的大小为2000字节 MSComm1.OutBufferSize:=1024; // 发送缓冲区大小 OutBufferSize属性:发送缓冲区的大小,默认值为1024,也可以自己设定,比如, MSComm1.OutBufferSize:=2000,则发送缓冲区的大小为2000字节 MSComm1.InBufferCount:=0; //清空接受缓冲区 InBufferCount属性:当前接收缓冲区接收到的数据的长度, count:=MSComm1.InBufferCount, 则count值就是接收缓冲区接收到的数据的长度,对InBufferCount 赋值MSComm1.InBufferCount:=0,可以清空接受缓冲区 MSComm1.OutBufferCount:=0; //清空发送缓冲区 OutBufferCount属性:当前发送缓冲区中数据的长度,对OutBufferCount 赋值MSComm1. OutBufferCount:=0,可以清空发送缓冲区 MSComm1.InputMode:=comInputModeText;// 以文本方式取回数据 MSComm1.InputMode:=comInputModeBinary; //设置接收数据模式为二进制形式 InputMode属性:串口接收数据的模式, comInputModeText(0)表示以文本(ASCII)方式取回数据, comInputModeBinary(1)表示以二进制方式取回数据 comInputModeText, comInputModeBinary为预定义常量,分别表示0,1 RcvByte:=MSComm1.Input Input属性:通过Input属性可以读取串口中接收到的数据,RcvByte:=MSComm1.Input表示读取串口接收到的数据,其中RcvByte的数据类型为: array of Byte 或array of Variant.在读取之前先设置RcvByte的长度:SetLength(RcvByte,len),如果一次读取所有数据,则SetLength(RcvByte, MSComm1.InBufferCount) MSComm1.Output:= OutputDat Output属性:通过Output属性可以发送数据, MSComm1.Output:=OutputDat,则将OutputDat中

VC的MSCOMM控件

MFC之MSCOMM 2010年11月19日星期五 在mfc中进行串口通讯最简单的方法莫过于在对话框中使用MSCOMM控件了,MSComm通信控件提供了一系列标准通信命令的接口,它允许建立串口连接,可以连接到其他通信设备(如Modem).还可以发送命令、进行数据交换以及监视和响应在通信过程中可能发生的各种错误和事件,从而可以用它创建全双工、事件驱动的、高效实用的通信程序。 一、用MSComm控件通信 1.串口通信基础知识 一般悦来,计算机都有一个或多个串行端口,它们依次为com1、Com2、…,这些串口还提供了外部设备与pC进行数据传输和通信的通道。这些串口在CPU和外设之间充当解释器的角色。当字符数据从CPU发送给外设时,这些字符数据将被转换成串行比特流数据;当接收数据时,比特流数据被转换为字符数据传递给CPU,再进一步说,在操作系统方面,Windows用通信驱动程序(COMM.DRV)调用API函数发送和接收数据,当用通信控件或声明调用API函数时,它门由COMM. DRV解释并传递给设备驱动程序,作为一个程序员,要编写通信程序.只需知道通信控件提供给Windows通信AP1函数的接口即可.换句话说,只需设定和监视通信控件的属性和事件即可。 2.使用Mscomm控件 在开始使用MSComm控件之前。需要先了解其属性、事件或错误 属性描述 CommPort 设置或返回通信端口号 Settings 以字符串的形式设置或返回波特率、奇偶校验、数据位和停止位 PortOpen 设置或返回通信端口的状态。也可以打开和关闭端口 Input 返回和删除接收缓冲区中的字符 Output 将字符串写入发送缓冲区 CommEvent属性为通信事件或错误返回下列值之一。在该控件的对象库中也可以找到这些常量。 常量值描述 ComEventBreak 1001 收到了断开信号 ComEventCTSTO 1002 Clear To Send Timeout。在发送字符时,在系统指定的事1件内,CTS(Clear To end)线是低电平 ComEventDSRTO 1003 Data Set Ready Timeout。在发送字符时,在系统指定的事件内,DSR(Data Set Ready)线是低电平 ComEventFrame 1004 数据帧错误。硬件检测到一个数据帧错误 ComEventOverrun 1006 端口溢出。硬件中的字符尚未读,下一个字符又到达,并且丢失ComEventCDTO 1007 Carrier Detect Time。在发送字符时,在系统指定的事件内,CD (Carrier Detect)线是低电平。CD 也称为RLSD(Receive Line Singal Detect,接收线信号检测)ComEventRxOver 1008 接收缓冲区溢出。在接收缓冲区中没有空间 ComEventRxParity 1009 奇偶校验错。硬件检测到奇偶校验错误7 ComEventTxFull 1010 发送缓冲区满。在对发送字符排队时,发送缓冲区满ComEventDCB 1011 检取端口DCB(Device Control Blick)时发生了没有预料到的错误 通信事件包含了下面的设置: 常量值描述 ComEvSend 1 发送缓冲区中的字符数比Sthreshold值低 ComEvReceive 2 接收到了Rthreshold个字符。持续产生该事件,直到使用了Input属性删除了接收缓冲区中的数据 ComEvCTS 3 CTS(Clear To Send)线改变 ComEvDSR 4 DSR(Data Set Ready)线改变。当DSR从1到0改变时,该事件发生ComEvCD 5 CD(Carrier Detect)线改变ComEvRing6检测到响铃信号。一些URAT (Universal AsynchronousReciver--Transmitters,通用异步收发器)不支持该事件

MSComm控件实现串口通信的方法

MSComm控件实现串口通信的方法 碧峰晨曦 摘要:详细介绍了MSComm控件,并在VC++6.0中利用MSComm控件开发了基于对话框的串口通信实例。 关键词:串口通信,MSComm,VC++ 图书编号:TP311 0.引言 串口通信具有实现简单、价格低廉、通信稳定、数据传输可靠等优点,因而广泛应用于各种工业控制系统中。MSComm控件是微软公司开发的专门用于串口通信的控件。该控件为开发串口通信程序提供了更加快捷、容易的方法。在VC++中,对控件属性的操作都是通过特定的函数来实现的,这些函数都是CMSComm类的成员函数。当声明了一个CMSComm类对象后,就可以通过如下格式调用成员函数来访问控件属性了: <对象名>.<成员函数名>(<参数表>)或<对象名>-><成员函数名>(<参数表>) 1.MSComm控件属性及事件 1.1 MSComm控件属性 MSComm控件有许多属性,最主要的几个属性如下: 1)CommPort:设置该属性值可以获取当前程序使用的串口编号。 2)Setting:设置或者获取串行通信的通信参数(包括波特率、奇偶校验类型、数据位数及停止位数等)。 3)PortOpen:设置该属性可以打开或关闭串口。 4)Input:从接收缓冲区中返回并删除数据。 5)Output:向串口通信输出缓冲区写入数据。 6)CommEvent:当MSComm控件在运行时发生错误或产生各种事件时,向程序返回错误或事件类型。 1.2 MSComm控件的事件 该控件只有一个事件,即OnComm事件。当CommEvent属性值发生变化时就会触发OnComm事件。根据CommEvent属性值来分别执行各种情况下的处理程序。

MSComm控件使用详1

MSComm控件使用详解 MSComm 控件通过串行端口传输和接收数据,为应用程序提供串行通讯功能。MSComm 控件在串口编程时非常方便,程序员不必去花时间去了解较为复杂的API函数,而且在V C、VB、Delphi等语言中均可使用。 Microsoft Communications Control(以下简称MSCo mm)是Microsoft公司提供的简化Windows下串行通信编程的ActiveX控件,它为应用程序提供了通过串行接口收发数据的简便方法。具体的来说,它提供了两种处理通信问题的方法:一是事件驱动(Event-driven)方法,一是查询法。 1.MSComm控件两种处理通讯的方式 MSComm控件提供下列两种处理通讯的方式:事件驱动方式和查询方式。 1.1 事件驱动方式 事件驱动通讯是处理串行端口交互作用的一种非常有效的方法。在许多情况下,在事件发生时需要得到通知,例如,在串口接收缓冲区中有字符,或者 Carrier Detect (CD) 或 Re quest To Send (RTS) 线上一个字符到达或一个变化发生时。在这些情况下,可以利用 MSC omm 控件的 OnComm 事件捕获并处理这些通讯事件。OnComm 事件还可以检查和处理通讯错误。所有通讯事件和通讯错误的列表,参阅 CommEvent 属性。在编程过程中,就可以在OnComm事件处理函数中加入自己的处理代码。这种方法的优点是程序响应及时,可靠性高。每个MSComm 控件对应着一个串行端口。如果应用程序需要访问多个串行端口,必须使用多个 MSComm 控件。 1.2 查询方式 查询方式实质上还是事件驱动,但在有些情况下,这种方式显得更为便捷。在程序的每个关键功能之后,可以通过检查 CommEvent 属性的值来查询事件和错误。如果应用程序较小,并且是自保持的,这种方法可能是更可取的。例如,如果写一个简单的电话拨号程序,则没有必要对每接收一个字符都产生事件,因为唯一等待接收的字符是调制解调器的“确定”响应。 2.MSComm 控件的常用属性 MSComm控件有很多重要的属性,但首先必须熟悉几个属性。 CommPort 设置并返回通讯端口号。 Settings 以字符串的形式设置并返回波特率、奇偶校验、数据位、停止位。 PortOpen 设置并返回通讯端口的状态。也可以打开和关闭端口。 Input 从接收缓冲区返回和删除字符。 Output 向传输缓冲区写一个字符串。 下面分别描述: CommPort 属性 设置并返回通讯端口号。 语法 https://www.360docs.net/doc/076583239.html,mPort[ = value ] CommPort 属性语法包括下列部分: 部分描述 object 对象表达式,其值是“应用于”列表中的对象。

最新delphi中使用mscomm控件

delphi中使用mscomm控件 Mscomm是微软一个强大的串口通讯的控件,其强大,简单的特点今我们不舍,在delphi 中我们也可以使用它。下面这些代码是针对发送和接收为16进制处理的。 var senddata:array[1..10] of char; reData:array of Variant; sendstr:string; restr:string; i:longint; begin https://www.360docs.net/doc/076583239.html,mPort := 1; //指定端口 mscomm1.Settings := ‘9600,N,8,1‘; //其它参数 mscomm1.InBufferSize := 1024; //接收缓冲区 mscomm1.OutBufferSize := 1024; //发送缓冲区 mscomm1.InputMode := comInputModeBinary; //接收模式 mscomm1.InputLen := 0; //一次读取所有数据 mscomm1.SThreshold := 0; //一次发送所有数据 mscomm1.InBufferCount := 0; //清空读取缓冲区 mscomm1.OutBufferCount := 0; //清空发送缓冲区 mscomm1.PortOpen:=true; //打开端口 MSComm1.RThreshold := 16; //设置接收多少字节开产生oncomm事件senddata[1]:=chr($06); //要发送的数据 senddata[2]:=chr($03); senddata[3]:=chr($00); senddata[4]:=chr($03); senddata[5]:=chr($10); sendstr:=‘‘; for i:=1 to 5 do sendstr:=sendstr + senddata[i]; mscomm1.output:=sendstr; //发送数据 i:=0; bzw:=false;

山东移动短信营业厅短信业务代码

山东移动短信营业厅短信业务代码 为方便手机用户查询,现收集部分短信代码如下: 1.10086——进入移动营业厅首页 2.0——热点导航 3.1——话费余额查询110——充值卡充值 4.2——话费、归属地、密码服务及其他查询 5.3——各类套餐使用量查询 6.4——最近优惠活动及地市业务办理 7.5——常用业务办理598——两城一家及地市热点业务办理 8.6——移动新业务办理645——开通新华移动快报VIP 9.7——移动生活圈 10.8——3G特色业务 11.20——当前话费查询 12.21——本机品牌资费及以开通业务 13.22——月初扣费查询(回复10086,回到短信营业厅首页) 14.23*手机号码——号码归属地查询 15.24——密码修改与重置 16.25——月账单及明细查询 17.26——其他查询 18.50——来电显示 19.51——全时通 20.52——彩铃 21.53——GPRS业务 22.54——定制话费及余额提醒 23.55——天气预报 24.56——手机报 25.57——139邮箱 26.58——飞信 27.59——其他业务办理及服务 28.531——开通GPRS功能 29.532——开通10元GPRS套餐(包全国70M数据业务流量超出部分1元/M) 30.533——开通5元GPRS套餐(包全国30M数据业务流量超出部分1元/M) 31.534——开通20元GPRS套餐(包全国150M数据业务流量超出部分1元/M) 32.536——开通50元GPRS套餐(包全国500M数据业务流量超出部分1元/M) 33.538——取消GPRS功能 34.539——取消GPRS套餐 35.60——MM(移动应用商场) 36.61——手机阅读 37.62——手机视频 38.63——无线音乐 39.64——新华信息 40.65——短信回执 41.66——彩铃加加

MSComm控件的用法和函数说明

MSComm控件进行串口编程步骤: 1. 在建立的程序工程中插入MSComm控件。 2. 添加MSComm控件ID 的控制变量(或者对象)。 3. 对串口进行初始化,设置MSComm控件的属性。 4. 添加串口事件的消息处理函数OnComm()函数,在函数中根据应用需要,编写数据处理代码 5. 编写串口发送等其他代码。 6. 关闭串口。 +MSComm控件 常用属性: https://www.360docs.net/doc/076583239.html,mPort:设置并返回通信端口号 2.Settings:以字符串的形式设置并返回波特率、奇偶校验、数据位、停止位 3.PortOpen:设置并返回通信端口的状态。也可以打开和关闭端口 4.Input:从接收缓冲区返回和删除字符 5.Output:向传输缓冲区写一个字符 6.InputLen:设置并返回Input属性从接收缓冲区读取的字符数。 7.InBufferSize:设置或返回输入缓冲区的大小。 8.OutBufferSize:设置或返回输入缓冲区的大小。 9.InBufferCount:设置或返回输入缓冲区内等待读取的字节个数。 10.OutBufferCount:设置或返回输入缓冲区内等待读取的字节个数。 对MSComm控件通过Get/Set函数对来获取或设置控件的属性,每个属性均有与之对应的Get/Set函数 对。 用法说明 https://www.360docs.net/doc/076583239.html,mPort:设置并返回通信端口号 Void CMSComm::SetCommPort(short n); 设置串口号

Short CMSComm::GetCommPort(); 查询当前串口号 说明:n可以设置成1到16中的任何数(缺省值为1)。但是,如果用PortOpen属性打开一个并不存在的端口是,MSComm控件会产生错误68(设备无效); 必须在打开端口之前设置CommPort属性。 2.Settings:以字符串的形式设置并返回波特率、奇偶校验、数据位、停止位 Void CMSComm::SetSettings(LPCTSTR lpszNewValue); CString CMSComm::GetSettings(); 说明:当端口打开时,如果设置值lpszNewValue非法,则MSComm控件产生错误380(非法属性值)。 Value 由四个设置值组成,有如下格式:“BBBB,P,D,S” BBBB:波特率P: 奇偶校验,D:数据位数,S:停止位数 Value的缺省值:“9600,N,8,1”。 3.PortOpen:用于打开或关闭串口,或者返回串口的开、关状态 Void CMSComm::SetPortOpen(BOOL bNewValue); BOOL CMSComm::GetPortOpen(); 说明:bNewValue值设置为TRUE,则打开串口;bNewValue值设置为FALSE,则关闭串口。编程时可以再程序中打开或关闭串口,当程序终止,MSComm控件自动关闭串口。 4.InPut:从接收缓冲区内读出数据 VARIANT CMSComm::GetInPut(); 说明:返回数据类型为VARIANT型变量,该属性在串口没有打开时不能用,在运行时是只读的。 InPutMode=0时(检取数据为文本方式),变量中含String型数据。 InPutMode=1时(检取数据位二进制方式),变量中含Byte型数据。 5.OutPut:向发送缓冲区写数据,或返回发送缓冲区当前的数据 Void CMSComm::SetOutPut(const VARIANT& newValue); VARIANT CMSComm::GetOutPort(); 说明:变量类型为VARIANT,该属性在串口未打开时不可用。OutPut可以发送文本或二进制数据,当发送文本类型数据时,将字符型数据放入VARIANT型变量中;发送二进制数据时(按字节发送),将字节型数据放入VARIANT型变量中。若数据中包含了内嵌控制字符。空字符等,必须将其作为二进制数据发送。

相关文档
最新文档