扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:周万里 曾文火 来源:计算基与信息技术 2007年10月17日
关键字:
BOOL CPlcComDlg::ReadPLC(char *Read, char *address, int bytes) { CSerial Serial; char read_BUFFER; if(Serial.Open(m_com, m_Buad, m_Parity, m_Byte, m_StopBites)) { Serial.SendData(&ENQ_request,1);//发送联络讯号 Sleep(100); Serial.ReadData(&read_BUFFER,1);//读取PLC响应讯号 if(read_BUFFER==ACK) { //初始化变量 //发送图2命令格式代码 ASCII(readdatasum_check,readdata_sum); //将STX-ETX之间的字符相加,转换成ASCII(十六进制),并取和的低二位数。 if(*readdatasum_CHECK==*readdatasum_check)//和校验 { //对读出的数据进行处理,转换成整型数 for(int j=0;j<bytes/2;j++) { for(i=j*2;i<j*2+4;i++) Read[i]=(Read[i]>0x39)?(Read[i]-0x41+0xA):(Read [i]-0x30); Read_value[j]=(((((Read [j*4+2]<<4)+Read [j*4+3]))+Read [j*4+0])<<4)+Read [j*4+1]; } return TRUE; } else return FALSE; } } } } //将整数转换成ASCII(十六进制),并取低二位, void CPlcComDlg::ASCII(char *total_databytes, int read_bytes) { unsigned int uTmp; uTmp=read_bytes & 0x000f; total_databytes[1]=(uTmp<10)?(uTmp+0x30):(uTmp+0x41-0xA); uTmp=(read_bytes>>4) & 0x000f; total_databytes[0]=(uTmp<10)?(uTmp+0x30):(uTmp+0x41-0xA); } |
void CPlcComDlg::ForceOnOpreation(char *Address) { CSerial Serial; char read_BUFFER; CString strtemp; if(Serial.Open(m_com,9600)) { Serial.SendData(&ENQ_request,1); Sleep(100); Serial.ReadData(&read_BUFFER,1); if(read_BUFFER==ACK) { //初始化变量 //发送图4命令格式代码 ASCII(Sum_Check,sum); //将STX-ETX之间的字符相加,转换成ASCII(十六进制),并取和的低二位数 for(i=0;i<2;i++) Serial.SendData(&Sum_Check[i],1);//和校验 Sleep(100); Serial.ReadData(&read_buffer,1); if(read_buffer==ACK) return TRUE; else return FALSE; } } } |
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者