VB2005串口通讯 vb6的MSCOMM串口通讯
VB2005串口通讯 VB2005自带了一个串口通讯的控件SerialPort,该控件类似于VB6.0的串口Mscomm,但又有一定区别。 下面是对它们的一个比较: 1.串口的打开/关闭 VB6.0串口打开是MSComm1.PortOpen =True,VB2005则直接调用SerialPort1.Open VB6.0串口关闭是MSComm1.PortOpen= False,VB2005则直接调用SerialPort1.Close 2.参数的设置对比 VB串口设置可以单独设置,也可以通过其Setting属性设置如:MSComm1.Settings = "9600,n,8,2" 而VB2005的串口属性只能分别设置,如: 端口:SerialPort1.PortName 波特率:SerialPort1.BaudRate 数据位长度:SerialPort1.DataBit 奇偶校验:SerialPort1.Parity 停止位:SerialPort1.StopBits 3.向串行端口输出缓冲区写数据 VB6.0向串口写数据是MSComm1.Output方法,其传递的是字符串或数据的起始地址 VB2005向串口写数据是通过SerialPort1.Write方法,该方法有三种方式: (1).直接输出字符串,该方式只有一个参数,string,如:SerialPort1.Write SendString 这里面SendString是一个字符串 (2).以字节方式输出,这种方式有三个参数: 第一个参数是要输出的字节数据的起始地址 第二个参数是从字节数据的第几个开始 第三个参数是要发送的字节个数 例如:SerialPort1.Write (SendByte,1,10)就是指把字节数组的SendByte的第1到第10个字节发送到输出缓冲区 (3).以字符方式输出,这种方式也有三个参数: 第一个参数是要输出的字符数据的起始地址 第二个参数是从字符数据的第几个开始 第三个参数是要发送的字符个数 例如:SerialPort1.Write (SendChar,1,10)就是指把字符数组的SendByte的第1到第10个字符发送到输出缓冲区 4.从串行端口输入缓冲区读数据 VB6.0从串口读数据是MSComm1.Input方法,其返回的是字符串或一个一维数据 VB2005从串口读数据是通过SerialPort1.Read方法,该方法有二种方式: (1).以字节方式读出,这种方式有三个参数: 第一个参数buffer,是将输入写入到其中的字节数组 第二个参数offset,缓冲区数组中开始读出的偏移量,对于从头读的数据,应将其设为1 第三个参数count,要读取的字节数,如果读当前缓冲区所有数据,则可用其属性SerialPort1.BytesToRead作为参数传递 这里面SerialPort1.BytesToRead就是所接收的个数 例如:SerialPort1.Read (ReadByte,1,10)就是指把缓冲区的第1到第10个字节读到ReadByte字节数组中 (2).以字节方式读出,这种方式有三个参数: 第一个参数buffer,是将输入写入到其中的字符数组 第二个参数offset,缓冲区数组中开始读出的偏移量,对于从头读的数据,应将其设为1 第三个参数count,要读取的字节数,如果读当前缓冲区所有数据,则可用其属性SerialPort1.BytesToRead作为参数传递 这里面SerialPort1.BytesToRead就是所接收的个数 例如:SerialPort1.Read (ReadChar,1,10)就是指把缓冲区的第1到第10个字节读到ReadChar字符数组中 5.相关属性 (1).SerialPort1.DtrEnable 该值在串行通信过程中启用数据终端就绪 (DTR) 信号 在通讯时,请把该值置为1,否则读入的数据会丢失(原因尚未搞明白,可能跟硬件有关系吧) (2).SerialPort1.RtsEnable 该值指示在串行通信中是否启用请求发送 (RTS) 信号 当然,还有其它属性,这里只对常用几个参数作了对比,其它参数请自行参考相关说明. |