函数WriteFile()的功能是将资料写入串口,函数原型如下:
BOOL WriteFile(HANDLE hFile, LPCVOID lpBuffer,DWORD nNumberOfBytesToWrite, LPDWORD lpNumberOfBytesWritten, LPOVERLAPPED lpOverlapped)
参数HANDLE hFile指定通信设备的句柄;参数LPCVOID lpBuffer设置写入字符串的首地址;参数DWORD nNumberOfBytesToWrite设置要写入的字符的个数;参数LPDWORD lpNumber
OfBytesWritten设置实际写入的字符的个数;参数LPOVERLAPPED lpOverlapp
ed设置i/o重构结,通常为NULL。
4 参考程序
参考程序的目的是在键盘上输入“0”,使PLC的Y0输出端导通(ON);在键盘上输入“1”,使PLC的Y1输出端导通(ON);在键盘上输入“a”,使PLC的Y0输出端关闭(OFF);在键盘上输入“b”,使PLC的Y1输出端关闭(OFF)。
以使Y0输出端导通(ON)为例,说明来计算上位机给PLC发送命令的内容的过程。起始码是字元STX,对应的ASCII Code是02H;站号是字元0,因为站号占用两个字元,所以实际站号是字元00,对应的ASCII Code是30H30H;使位元元件为ON的字元是70,对应的ASCII Code是37H30H;Y0对应的字元是0040,转换后的字元是0200,对应的ASCIICode是30H32H30H30H;结束码是字元ETX,对应的ASCII Code是03H; 30H、30H、37H、30H、30H、32H、30H、30H、03H加和的结果是18C,取后两位是8C,对应的ASCII Code是38H43H。综上,要实现Y0为ON,发送的数据为0x02,0x30,0x30,0x37,0x30,0x30,0x32,0x30,0x30,0x03, 0x38,0x43;同理可得:要实现Y0为OFF,发送的数据为0x02,0x30,0x30,0x37,0x31,0x30,0x32,0x30,0x30,0x03,0x38,0x44;要实现Y1为ON,发送的数据0x02,0x30,0x30,0x37,0x30,0x30,0x32,0x30,0x31,0x03,0x38,0x44;要实现Y1为OFF,发送的数据为0x02,0x30,0x30,0x37,0x31,0x30,0x32,0x30,0x31,0x03,0x38,0x45。
计算出上位机给PLC发送命令的具体内容后,利用WINOOWs API函数就可以编写上位机的VC++程序,参考程序如下所示,本程序经过编译运行,达到了设计的要求。
上一页 [1] [2] [3] [4] [5] [6] 下一页