Rs232 通讯 COM口 通讯类代码.docx

上传人:b****7 文档编号:11221744 上传时间:2023-02-25 格式:DOCX 页数:12 大小:18.37KB
下载 相关 举报
Rs232 通讯 COM口 通讯类代码.docx_第1页
第1页 / 共12页
Rs232 通讯 COM口 通讯类代码.docx_第2页
第2页 / 共12页
Rs232 通讯 COM口 通讯类代码.docx_第3页
第3页 / 共12页
Rs232 通讯 COM口 通讯类代码.docx_第4页
第4页 / 共12页
Rs232 通讯 COM口 通讯类代码.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

Rs232 通讯 COM口 通讯类代码.docx

《Rs232 通讯 COM口 通讯类代码.docx》由会员分享,可在线阅读,更多相关《Rs232 通讯 COM口 通讯类代码.docx(12页珍藏版)》请在冰豆网上搜索。

Rs232 通讯 COM口 通讯类代码.docx

Rs232通讯COM口通讯类代码

Rs232通讯COM口通讯类代码(属性)()(原作)

2008年06月17日星期二下午11:

40

整个源码都已上传至:

通讯类如下:

ImportsSystem.Runtime.InteropServices

ImportsSystem.ComponentModel

ImportsSystem.Text

ImportsSystem.Threading

ImportsSystem.Windows.Forms

PublicClasscRS232

PublicWithEventsTimer1AsSystem.Windows.Forms.Timer   '声明一个定时器

#Region"类头部"

#Region"各种参数枚举"

'极性位设置

PublicEnumeDataParity

Parity_None=0

Parity_Odd

Parity_Even

Parity_Mark

EndEnum

'停止位设置

PublicEnumeDataStopBit

StopBit_1=0

StopBit_2=2

EndEnum

'数据位设置

PublicEnumeDataBit

Bit_5=5

Bit_6=6

Bit_7=7

Bit_8=8

EndEnum

'硬件握手设置

PublicEnumeHwHandShake

hhNone=0

hhRtsOn=1

hhRtsCts=2

hhDtrOn=3

hhDtrDsr=4

EndEnum

''软件握手设置

PublicEnumeSwHandShake

shNone=0

shXonXoff=1

EndEnum

'缓冲区清除设置

PublicEnumePurgeBuffers

PXAbort=&H2

PXClear=&H8

TxAbort=&H1

txClear=&H4

EndEnum

'串行通信硬件线路设置(EscapeFunction)

PublicEnumeLines

SetXoff=1'当接收到xoff字符时启动传输操作

SetXon=2'当接收到XON字符时启动传输操作

SetRts=3'将RTS线路升成高电位

ClearRts=4'将RTS线路降成低电位

SetDtr=5'将DTR线路升成高电位

ClearDtr=6'将DTR线路降为低电位

ResetDev=7'重置设备

SetBreak=8'设置通信状态为中断(送出BREAK信号)

ClearBreak=9'清除BREAK信号,使传输操作继续

EndEnum

'调制解调器专用状态位设置

PublicEnumeModemStatusBits

ClearToSendOn=&H10

DataSetReadOn=&H20

RingIndicatorOn=&H40

CarrierDetect=&H80

EndEnum

'事件屏蔽设置

PublicEnumeEventMasks

RxChar=&H1'输入缓冲区已收到一个字符

RXFlag=&H2'使用setcommstate函数设置的DCB结构中的等待字符已被传入输入缓冲区

TxBufferEmpty=&H4'在输出缓冲区中的数据已被完全送出

ClearToSend=&H8'CTS(Cleartosend)线路发生变化

DataSetReady=&H10'DSR线路发生变化

ReceiveLine=&H20'CD线路信号发生变化

Break=&H40'收到BREAK信号

StatusError=&H80'线路状态错误,包括了CE——FRAME和CE——OVERRUN,CE——RXPARITY三种错误

Ring=&H100'检测到响铃信号

EndEnum

'DCB设置常数

PublicEnumeBitDef

dcb_Binary=&H1

dcb_parityCheck=&H2

dcb_OutxCtsFlow=&H4

dcb_OutxDsrFlow=&H8

dcb_DtrControlMask=&H30

dcb_DtrControlDisable=&H0

dcb_DtrControlEnable=&H10

dcb_DtrControlHandshake=&H20

dcb_DsrSendsivity=&H40

dcb_TXContinueOnXoff=&H80

dcb_Outx=&H100

dcb_InX=&H200

dcb_ErrorChar=&H400

dcb_NullStrip=&H800

dcb_RtsControlMask=&H3000

dcb_RtsControlToggle=&H3000

dcb_RtsControldisable=&H0

dcb_RtsControlEnable=&H1000

dcb_RtscontrolHandShake=&H2000

dcb_AbortOnError=&H4000

dcb_Reserveds=&HFFFF8000

EndEnum

'通信端口错误常数

PublicEnumeCommError

CE_DREAK=&H10

CE_DNS=&H800

CE_FRAME=&H8

CE_IOE=&H400

CE_MODE=&H8000

CE_OOP=&H1000

CE_PTO=&H200

CE_OVERRUN=&H2

CE_RXOVER=&H1

EndEnum

'通信端口线路状态检测常数

PublicEnumeCommErrorLine

fCtsHold=&H1'等待CTS信号准备传送

fDsrHold=&H2'等待DRS信号准备传送

fRlsdHold=&H4'等待RLAS信号准备传送

fXoffHold=&H8'收到XOFF字符停止传送

fXoffSent=&H10'已送出XOFF字符,停止传送

fEof=&H20'EOF字符已送出

fTxim=&H40'字符等待传送

EndEnum

'通信速度的设置枚举

PublicEnumeBaudrates

BR_110=100

BR_300=300

BR_600=600

BR_1200=1200

BR_2400=2400

BR_4800=4800

BR_9600=9600

BR_14400=14400

BR_19200=19200

BR_38400=38400

BR_56000=56000

BR_57600=57600

BR_115200=115200

EndEnum

#EndRegion

#Region"结构"

'DeviceControlblock结构声明

=1)>PublicStructureDCB

PublicDCBlengthAsInt32

PublicBaudRateAsInt32

PublicBits1AsInt32

PublicwReservedAsInt16

PublicXonLimAsInt16

PublicXoffLimAsInt16

PublicByteSizeAsByte

PublicParityAsByte

PublicStopBitsAsByte

PublicXonCharAsChar

PublicXoffCharAsChar

PublicErrorCharAsChar

PublicEofCharAsChar

PublicEvtCharAsChar

PublicwReserved2AsInt16

EndStructure

'通信端口状态结构

=1)>PublicStructureCOMSTAT

DimfBitFieldsAsInt32

DimcbInQueAsInt32

DimcbOutQueAsInt32

EndStructure

'超时设置结构

=1)>PublicStructureCOMMTIMEOUTS

PublicReadIntervalTimeoutAsInt32

PublicReadTotalTimeoutMultiplierAsInt32

PublicReadTotalTimeoutConstantAsInt32

PublicWriteTotalTimeoutMultiplierAsInt32

PublicWriteTotalTimeoutConstantAsInt32

EndStructure

'通信端口配置结构

=8)>PublicStructureCOMMCONFIG

PublicdwSizeAsInt32

PublicwVersionAsInt16

PublicwReservedAsInt16

PublicdcbxAsDCB

PublicdwProviderSubTypeAsInt32

PublicdwProviderOffsetAsInt32

PublicdwProviderSizeAsInt32

PublicwcProviderDataAsInt16

EndStructure

'异步传输的设置结构

=1)>PublicStructureOVERLAPPED

PublicInternalAsInt32

PublicInternalHighAsInt32

PublicOffsetAsInt32

PublicOffsetHighAsInt32

PublichEventAsIntPtr

EndStructure

#EndRegion

#Region"常数"

PrivateConstPURGE_RXABORTAsInteger=&H2

PrivateConstPURGE_RXCLEARAsInteger=&H8

PrivateConstPURGE_TXABORTAsInteger=&H1

PrivateConstPURGE_TXCLEARAsInteger=&H4

PrivateConstGENERIC_READAsInteger=&H80000000'打开通信端口时的参数

PrivateConstGENERIC_WRITEAsInteger=&H40000000'打开通信端口时的参数

PrivateConstOPEN_EXISTINGAsInteger=3'打开通信端口时的参数

PrivateConstINVALID_HANDLEAsInteger=-1'通信端口关闭时的Handle值

PrivateConstIO_BUFFER_SIZEAsInteger=1024

PrivateConstFILE_FLAG_OVERLAPPEDAsInt32=&H40000000

PrivateConstERROR_IO_PENDINGAsInt32=997

PrivateConstWAIT_OBJECT_0AsInt32=0

PrivateConstERROR_IO_INCOMPLETEAsInt32=996

PrivateConstWAIT_TIMEOUTAsInt32=&H102&

PrivateConstINFINITEAsInt32=&HFFFFFFFF

PrivateConstTIMER_INTERVALAsInt16=10'定时器所使用的时间隔

#EndRegion

#Region"局部变量"

PrivatemabtRxBufAsByte()

'PrivatemeModeAseMode

PrivatemoThreadTxAsThread

PrivatemoThreadRxAsThread

PrivatemoEventsAsThread

PrivatemiTmpBytes2ReadAsInt32

PrivatemeMaskAseEventMasks

PrivatembDisposedAsBoolean

PrivatembUseXonXoffAsBoolean

PrivatembEnableEventsAsBoolean

PrivatemiBufThresholdAsInt32=1

PrivatemuOvlEAsOVERLAPPED

PrivatemuOvlWAsOVERLAPPED

PrivatemuOvlRAsOVERLAPPED

PrivatemhRSAsIntPtr=INVALID_HANDLE   '//串口的handle        

PrivatemiPortAsInteger=1  '//默认通信端口为COM1

PrivatemfPortOpenAsBoolean'通信端口打开状态

PrivatemeBaudrateAseBaudrates=eBaudrates.BR_9600'9600bps

PrivatemiTimeoutAsInt32=70  '//

PrivatemiBaudRateAsInt32=9600

PrivatemeParityAseDataParity=eDataParity.Parity_None'无同位校验

PrivatemstopBitAseDataStopBit=eDataStopBit.StopBit_1'停止校验位为1

PrivatemeDataBitAseDataBit=eDataBit.Bit_8'数据长度为8

PrivatemeHwHandshakeAseHwHandShake=eHwHandShake.hhNone'默认为无硬件握手

PrivatemeSwHandshakeAseSwHandShake=eSwHandShake.shNone'默认为无软件握手

PrivatemeCommEventAseEventMasks'通信事件号码

PrivatemeCommErrorAseCommError'错误号码

PrivatemDCBBitAseBitDef'控制区块变量

PrivatemReadLenAsInteger'每次READ命令的读取字节数

PrivatemRThresholdAsInteger=1'触发ondatareceived事件阈值

PrivatemCDHoldingAsBoolean'CD的针脚状态

PrivatemDSRHoldingAsBoolean'DSR的针脚状态

PrivatemCTSHoldingAsBoolean'CTS的针脚状态

PrivatemRIHoldingAsBoolean'RI的针脚状态

PrivatemeStopBitAseDataStopBit=0

PrivatemiDataBitAsInt32=8

PrivatemHEAsGCHandle

PrivatemHRAsGCHandle

PrivatemHWAsGCHandle

PrivatemDTRAsBoolean'DTR状态

PrivatemRTSAsBoolean'RTS状态

PrivatemfTimerAsBoolean'记录定时器的状态

PrivatemiBufferSizeAsInteger=512'默认缓冲区512bytes

PublicmiReceivedAsInteger=0'已收到数据

#EndRegion

#Region"属性"

'通信端口号码属性设置

PublicPropertyCommPort()AsInteger

Get

ReturnmiPort

EndGet

Set(ByValvalueAsInteger)

miPort=value

EndSet

EndProperty

'''设置端口开关

'''设置会调用OpenCom及CloseCom

PublicPropertyPortOpen()AsBoolean

Get

ReturnmfPortOpen

EndGet

Set(ByValvalueAsBoolean)

IfvalueThen'打开

IfmfPortOpenThen'已经打开

ThrowNewException("通信端口已打开")

ExitProperty

EndIf

IfNotOpenCOM()Then

ThrowNewException("通信端口打开错误(端口被其它程序占用或不存在此端口)!

")

ExitProperty

EndIf

mfPortOpen=True

mfTimer=True

IfNotTimer1.EnabledThen

Timer1.Start()

EndIf

           Else'关闭通信端口

IfNotCloseCOM()Then'调用关闭端口

ThrowNewException("通信端口关闭错误")

ExitProperty

EndIf

mfPortOpen=False

EndIf

EndSet

EndProperty

'设置通信速度,利用枚举比较方便

PublicPropertyBaudRate()AseBaudrates

Get

ReturnmeBaudrate

EndGet

Set(ByValvalueAseBaudrates)

meBaudrate=value

EndSet

EndProperty

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

'硬件握手设置

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

PublicPropertyhwhandShaking()AseHwHandShake

Get

ReturnmeHwHandshake

EndGet

Set(ByValvalueAseHwHandShake)

meHwHandshake=value

EndSet

EndProperty

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

'软件握手设置

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

PublicPropertyswhandShaking()AseSwHandShake

Get

ReturnmeSwHandshake

EndGet

Set(ByValvalueAseSwHandShake)

meSwHandshake=value

EndSet

EndProperty

'数据位设置

PublicPropertyDataBit()AseDataBit

Get

ReturnmeDataBit

EndGet

Set(ByValValueAseDataBit)

meDataBit=Value

EndSet

EndProperty

'停止位设置

PublicPropertyStopBit()AseDataStopBit

Get

ReturnmeStopBit

EndGet

Set(ByValValueAseDataStopBit)

meStopBit=Value

EndSet

EndProperty

'同位校验设置

PublicPropertyParity()AseDataParity

Get

ReturnmeParity

EndGet

Set(ByValValueAseDataParity)

meParity=Value

EndSet

EndProperty

'通信事件(只读)

PublicReadOnlyPropertyCommEvent()AseEventMasks

Get

ReturnmeCommEvent

EndGet

EndProperty

'通信错误(只读)

PublicReadOnlyPropertyCommError()AseCommError

Get

ReturnmeCommError

EndGet

EndProperty

'每次读取操作的字节数,使用read命令时可以指定

PublicPropertyReadLen()AsInteger

Get

ReturnmReadLen

EndGet

Set(ByValvalueAsInteger)

mReadLen=value

EndSet

EndProperty

';触发ondatareceived事件的阈值,可以设置启动事件的阈值

PublicPropertyRThreshold()AsInteger

Get

ReturnmRThreshold

EndGet

Set(ByValvalueAsInteger)

mRThreshold=value

EndSet

EndProperty

'DSR线路状态,TRUE、FALSE高电

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 职业教育 > 职高对口

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1