📄 charge1.cpp
字号:
// charge1.cpp: implementation of the charge class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "AutoChangeMoney.h"
#include "charge1.h"
#include "AutoChangeMoneyDlg.h"
#include "AutoChangeMoneyDlg.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
charge::charge()
{
}
charge::~charge()
{
}
//接收由找零机返回的有效数据,并保存在数组中
int charge::recieve()
{
m_comm->GetInput();
int k=0,m=0,j=0;
BOOL flag =1;
VARIANT vResponse;
RcvData.RemoveAll();
RcvData.SetSize(RcvData.GetSize());
while(flag)
{
k=m_comm->GetInBufferCount();
if(k>0) //如果输入缓冲器有数据
{
t=t+k; //接收到的数据的总数
m_comm->SetInputLen(k);
vResponse=m_comm->GetInput();
unsigned char *pbval;
pbval=(unsigned char *)vResponse.parray->pvData;
for(int i=0;i<k;i++)
RcvData.Add(pbval[i]); //接收数据
if(t>=22)
{
for(j=m;j<t-20;j++) //查询是否有有效数据
{
if((RcvData.GetAt(j)==0x01)&&(RcvData.GetAt(j+1)==0x50)
&&(RcvData.GetAt(j+2)==0x02)&&(RcvData.GetAt(j+3)==array.GetAt(3)))
{ //如果检测到有效数据头,则对校验位进行校验
BYTE bcc2 = 0x00;
for(int it=j;it<j+20;it++)
bcc2 = bcc2^RcvData.GetAt(it);
if(bcc2 == RcvData.GetAt(j+20))
{ //如果校验位正确,则只将有位数据保存在数组rcv[]中
flag=0;
for(int i=j;i<t;i++)
rcv[i-j]=RcvData.GetAt(i);
Sleep(2500);
while(m_comm->GetInBufferCount())
{m_comm->GetInput();}
return j; //返回有效起始位的位置
}
}
}
m=j; //下次查找有效数据的起点
}
}
}
}
//设置并发送数据,进行找零
void charge::send()
{
unsigned int d;
BYTE bcc = 0x00;
array.SetAt(4,array.GetAt(4)+tenup);
array.SetAt(5,array.GetAt(5)+tenlow);
array.SetAt(6,array.GetAt(6)+oneup);
array.SetAt(7,array.GetAt(7)+onelow);
for(int i = 0;i<9;i++)
bcc = bcc^array.GetAt(i);//设置校验位
d = bcc;
array.SetAt(9,d);
m_comm->SetOutput(COleVariant(array));
}
//初始化成员变量,
charge::charge(CMSComm *m_comm, unsigned int a, unsigned int b, unsigned int c, unsigned int d)
{
// for(int i=0;i<100;i++)
// rcv[i] = 0;
this->m_comm = m_comm;
array.RemoveAll();
array.Add(0x04);
array.Add(0x50);
array.Add(0x02);
array.Add(0x56); //cmd
array.Add(0x30); //upperdata 0十张
array.Add(0x30); //upperdata 0张
array.Add(0x30); //lowwerdata 0十张
array.Add(0x30); //lowwerdata 0张
array.Add(0x03);
array.Add(0x03); //校验位
tenup = a;
tenlow = b;
oneup = c;
onelow = d;
t=0;
}
//返回接收到的数据总数
int charge::getnumber()
{
return t;
}
//返回从找零机返回的数据的数组
unsigned int* charge::get()
{
return rcv;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -