?? 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 + -