📄 kd6006.cpp
字号:
/*********************************************************************
* Designed by xiaohuiyang 2002.03.15 E-mail: yxh2001@21cn.com *
*********************************************************************/
// KD680.cpp: implementation of the CKD6006 class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "KD6006.h"
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
extern void TraceDebug(char *pchData, int len);
CKD6006::CKD6006()
{
gTimeOut = 5;
m_ReadMode = 0;
mSerialPort = 0;
mExtPort = 0;
}
CKD6006::~CKD6006()
{
gCom.AsynClose();
}
short CKD6006::zSetPort(short SerialPort)
{
gCom.AsynClose();
mSerialPort = SerialPort;
gCom.SetupParam(mSerialPort, 9600, 'N', '8', '1');
return 0;
}
/************************
扩口器选择:
入口参数:A,B,C,D,K(注意用大写)
*************************/
void CKD6006::zSetExtPort(short ExtPort)
{
mExtPort = ExtPort;
}
short CKD6006::zSelectExtPort()
{
char chCommand[256];
int nLen, ret;
short j = 0;
if(mExtPort < 1 || mExtPort > 5)
{
return 0;
}
if(!gCom.AsynOpen())
{
return -1;
}
memset(chCommand, '\0', 256);
switch(mExtPort)
{
case 1:
strcpy(chCommand, "\x1b%A");
break;
case 2:
strcpy(chCommand, "\x1b%B");
break;
case 3:
strcpy(chCommand, "\x1b%C");
break;
case 4:
strcpy(chCommand, "\x1b%D");
break;
case 5:
strcpy(chCommand, "\x1b%K");
break;
}
nLen = strlen(chCommand);
gCom.AsynSendData(chCommand, strlen(chCommand));
ret = gCom.sReadByLen(3, 1);
if(ret < 3)
{
return -3;
}
return 0;
}
int CKD6006::gOpenKD606Com()
{
short ret;
ret = zSelectExtPort();
if(ret)
{
return ret;
}
if(mSerialPort <= 0)
return _NO_DEVICE;
if(!gCom.AsynOpen())
{
return -1;
}
return 0;
}
short CKD6006::zSetReadMode(char TrackMode)
{
char chSend[256];
memset(chSend,'\0',256);
sprintf(chSend,"%c%c%c",0x1B,0x42,0x5D);
if(gCom.AsynSendData(chSend, strlen(chSend)) < 0)
{
return -1;
}
m_ReadMode = 1;
return 0;
}
short CKD6006::zWaitReadTrack(char TrackMode)
{
char *pchRTrack2, *pchRTrack3;
short ret,i;
memset(Track2,'\0',256);
memset(Track3,'\0',256);
if(!m_ReadMode)
{
ret = zSetReadMode(TrackMode);
if(ret<0)
{
return _ERR_SETREAD;
}
}
ret = gCom.sReadByEndChar(0x1C, 1);
if(ret == _NO_DATA)
{
return _NO_DATA;
}
else if(ret < _NO_DATA)
{
m_ReadMode = 0;
return ret;
}
m_ReadMode = 0;
for(i = 0; i < gCom.nRcvlen; i++)
{
if(gCom.chRcvbuf[i]==0x1B && gCom.chRcvbuf[i+1] == 0x73)
{
break;
}
}
if(i == gCom.nRcvlen)
return _ERR_RCVDATA;
i+=2;
if(gCom.chRcvbuf[i] == 0x7F)
{
i++;
}
pchRTrack2 = Track2;
pchRTrack3 = Track3;
*pchRTrack2 = '\0';
for (; i < gCom.nRcvlen; i++)
{
if(gCom.chRcvbuf[i] == 0x41)
break;
*pchRTrack2 = gCom.chRcvbuf[i];
pchRTrack2++;
}
*pchRTrack2 = '\0';
i++;
*pchRTrack3 = '\0';
if(gCom.chRcvbuf[i] == 0x7F)
{
i++;
}
for(; i < gCom.nRcvlen; i++)
{
if(gCom.chRcvbuf[i] == 0x3F)
{
break;
}
*pchRTrack3 = gCom.chRcvbuf[i];
pchRTrack3++;
}
*pchRTrack3 = '\0';
if(strlen(Track2) < 6 && strlen(Track3) < 6)
{
return _ERR_RCVDATA;
}
return _OK_RCV;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -