⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mingxi.cpp

📁 wince无线点菜软件,具备常规点菜的所有功能,可直接使用
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// Mingxi.cpp : implementation file
//
#include "stdafx.h"
#include "resource.h"
#include "Mingxi.h"
#include "Diancai.h"
#include "database.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CMingxi dialog


CMingxi::CMingxi(CWnd* pParent /*=NULL*/)
	: CDialog(CMingxi::IDD, pParent)
{
	//{{AFX_DATA_INIT(CMingxi)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
}


void CMingxi::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CMingxi)
	DDX_Control(pDX, IDC_BUTTON_SHANCHU, m_shanchu);
	DDX_Control(pDX, IDC_LIST1, m_list);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CMingxi, CDialog)
	//{{AFX_MSG_MAP(CMingxi)
	ON_BN_CLICKED(IDC_BUTTON_DIANCAI, OnButtonDiancai)
	ON_BN_CLICKED(IDC_BUTTON_SEND, OnButtonSend)
	ON_BN_CLICKED(IDC_BUTTON_JIAOQI, OnButtonJiaoqi)
	ON_BN_CLICKED(IDC_BUTTON_SHANCHU, OnButtonShanchu)
	ON_BN_CLICKED(IDC_BUTTON_CHUICAI, OnButtonChuicai)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CMingxi message handlers

void CMingxi::OnButtonDiancai() 
{
	char xuhao[6];
	int i;
	CDiancai dlg(this);

	dlg.m_liushuihao=m_liushuihao;
	dlg.m_taihao=m_taihao;
	m_xuhao=m_list.GetItemText(m_list.GetItemCount()-1,1);
	WideCharToMultiByte(CP_ACP,0,m_xuhao,-1,xuhao,4,NULL,NULL);
	i=0;
	dlg.m_xuhao=0;
	while (xuhao[i])
	{
		dlg.m_xuhao=dlg.m_xuhao*10+xuhao[i]-48;
		i++;
	}
	dlg.m_xuhao++;
	dlg.DoModal();
	UpData();
}

BOOL CMingxi::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	m_list.SetExtendedStyle(LVS_EX_FULLROWSELECT);
	m_list.InsertColumn(0,(LPCTSTR)TEXT("标志"),LVCFMT_LEFT,40,0);
	m_list.InsertColumn(1,(LPCTSTR)TEXT("序号"),LVCFMT_LEFT,40,1);
	m_list.InsertColumn(2,(LPCTSTR)TEXT("菜名"),LVCFMT_LEFT,60,2);
	m_list.InsertColumn(3,(LPCTSTR)TEXT("数量"),LVCFMT_LEFT,40,3);
	m_list.InsertColumn(4,(LPCTSTR)TEXT("单价"),LVCFMT_LEFT,60,4);
	m_list.InsertColumn(5,(LPCTSTR)TEXT("口味"),LVCFMT_LEFT,90,5);
	m_list.InsertColumn(6,(LPCTSTR)TEXT("备注"),LVCFMT_LEFT,70,6);
	m_list.InsertColumn(7,(LPCTSTR)TEXT("计费"),LVCFMT_LEFT,40,7);
	m_list.InsertColumn(8,(LPCTSTR)TEXT("状态"),LVCFMT_LEFT,40,8);
	m_list.InsertColumn(9,(LPCTSTR)TEXT("叫起"),LVCFMT_LEFT,40,9);
	m_list.InsertColumn(10,(LPCTSTR)TEXT("编号"),LVCFMT_LEFT,40,10);
	m_list.InsertColumn(11,(LPCTSTR)TEXT("流水号"),LVCFMT_LEFT,50,11);
	UpData();
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CMingxi::UpData()
{
	char RecordBuf[257],*ptchar,field[257];
 	WCHAR wcCode[257];
	HANDLE hFile;
	int i;

	hFile = CreateFile(m_taihao, GENERIC_READ, FILE_SHARE_READ,
          NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
 	if (hFile==INVALID_HANDLE_VALUE) return;
	i=0;
	m_list.DeleteAllItems();
 	while(fGetRecord(hFile,RecordBuf))
 	{
		if (RecordBuf[0]=='y') continue;
		m_list.InsertItem(LVIF_TEXT|LVIF_STATE, i, L"",0, LVIS_SELECTED,0,0);
		ptchar=RecordBuf+1;
		ptchar=fGetaField(ptchar,field);
 		MultiByteToWideChar(CP_ACP,0,field,-1,wcCode,255);
		m_list.SetItemText(i,11, wcCode);
		ptchar=fGetaField(ptchar,field);
 		MultiByteToWideChar(CP_ACP,0,field,-1,wcCode,255);
		m_list.SetItemText(i,1, wcCode);
		ptchar=fGetaField(ptchar,field);
 		MultiByteToWideChar(CP_ACP,0,field,-1,wcCode,255);
		m_list.SetItemText(i,10, wcCode);
		ptchar=fGetaField(ptchar,field);
 		MultiByteToWideChar(CP_ACP,0,field,-1,wcCode,255);
		m_list.SetItemText(i,2, wcCode);
		ptchar=fGetaField(ptchar,field);
 		MultiByteToWideChar(CP_ACP,0,field,-1,wcCode,255);
		m_list.SetItemText(i,3, wcCode);
		ptchar=fGetaField(ptchar,field);
		ptchar=fGetaField(ptchar,field);
 		MultiByteToWideChar(CP_ACP,0,field,-1,wcCode,255);
		m_list.SetItemText(i,4, wcCode);
		ptchar=fGetaField(ptchar,field);
 		MultiByteToWideChar(CP_ACP,0,field,-1,wcCode,255);
		m_list.SetItemText(i,8, wcCode);
		ptchar=fGetaField(ptchar,field);
 		MultiByteToWideChar(CP_ACP,0,field,-1,wcCode,255);
		m_list.SetItemText(i,7, wcCode);
		ptchar=fGetaField(ptchar,field);
 		MultiByteToWideChar(CP_ACP,0,field,-1,wcCode,255);
		m_list.SetItemText(i,5, wcCode);
		ptchar=fGetaField(ptchar,field);
 		MultiByteToWideChar(CP_ACP,0,field,-1,wcCode,255);
		m_list.SetItemText(i,9, wcCode);
		ptchar=fGetaField(ptchar,field);
 		MultiByteToWideChar(CP_ACP,0,field,-1,wcCode,255);
		m_list.SetItemText(i,6, wcCode);
		ptchar=fGetaField(ptchar,field);
 		MultiByteToWideChar(CP_ACP,0,field,-1,wcCode,255);
		m_list.SetItemText(i,0, wcCode);
		m_list.Update(i);
		i++;
 	}
	CloseHandle(hFile);
}

void CMingxi::OnButtonSend() 
{
	SOCKET s_sock;
	struct sockaddr_in addrClient;
	int nCnt,i,j,sendlen;
	char sendbuf[257],recbuf[257];
	unsigned short crc;
	u_short portid;
	u_long SAddr;
	int taiweilen,caipulen;
	char oprid[21],caipubianhao[11],xuhao[5],liushuihao[11],shuliang[11],beizhu[51],kouwei[51],jiaoqi[5],jifei[5];
	char RecordBuf[257],*ptchar,field[257];
	HANDLE hFile;
	unsigned long len;

	hFile = CreateFile(CONFIGFILE, GENERIC_READ, FILE_SHARE_READ,
		  NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
 	if (hFile==INVALID_HANDLE_VALUE) 
	{
		MessageBox(TEXT("打开配置文件失败,请点“配置”按钮重新配置"));
		return;
	}
	ReadFile(hFile,&SAddr,4,&len,NULL);
	ReadFile(hFile,&portid,2,&len,NULL);
	ReadFile(hFile,&taiweilen,4,&len,NULL);
	ReadFile(hFile,&caipulen,4,&len,NULL);
	ReadFile(hFile,oprid,20,&len,NULL);
	CloseHandle(hFile);
	hFile = CreateFile(m_taihao, GENERIC_READ|GENERIC_WRITE, FILE_SHARE_READ|FILE_SHARE_WRITE,
		  NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
 	if (hFile==INVALID_HANDLE_VALUE) 
	{
		return;
	}
	s_sock = socket (AF_INET, SOCK_STREAM, 0);
	if (s_sock == INVALID_SOCKET) 
	{
		MessageBox(TEXT("通讯失败,请检查设备"));
		CloseHandle(hFile);
		return;
	}
	addrClient.sin_family=AF_INET;
	addrClient.sin_addr.s_addr=SAddr;
	addrClient.sin_port=portid;
			
	if (connect(s_sock, (struct sockaddr *)&addrClient, sizeof (addrClient))==SOCKET_ERROR ) 
	{
		closesocket(s_sock);
		CloseHandle(hFile);
		MessageBox(TEXT("通讯失败,请检查设备"));
		return;
	}
//	k=0;
	while(fGetRecord(hFile,RecordBuf))
	{
		ptchar=RecordBuf+1;
		ptchar=fGetField(ptchar,field,12);
		if (RecordBuf[0]=='y'||!strcmp(field,"*"))
		{
	//		k++;
			continue;
		}
		ptchar=RecordBuf+1;
		ptchar=fGetaField(ptchar,liushuihao);
		ptchar=fGetaField(ptchar,xuhao);
		ptchar=fGetaField(ptchar,caipubianhao);
		ptchar=RecordBuf+1;
		ptchar=fGetField(ptchar,shuliang,4);
		ptchar=RecordBuf+1;
		ptchar=fGetField(ptchar,jifei,8);
		ptchar=fGetaField(ptchar,kouwei);
		ptchar=fGetaField(ptchar,jiaoqi);
		ptchar=fGetaField(ptchar,beizhu);
		sprintf(sendbuf,"%c%s%c%s%c%s%c%s%c%s%c%s%c%s%c%s%c%s%c",0x09,liushuihao,0x1b,xuhao,0x1b,caipubianhao,0x1b,shuliang,0x1b,kouwei,0x1b,jiaoqi,0x1b,beizhu,0x1b,jifei,0x1b,oprid,0x1b);

		crc=0;
		sendlen=strlen(sendbuf);
		i=0;
		while (i<sendlen)
		{
			crc+=(unsigned char)sendbuf[i];
			i++;
		}
		sendbuf[i]=crc/256;
		sendbuf[i+1]=crc%256;
		sendbuf[i+2]=0;
		sendlen+=3;
		
		i=0;
		while (i<5)
		{
			i++;
			closesocket(s_sock);
			s_sock = socket (AF_INET, SOCK_STREAM, 0);
			if (s_sock == INVALID_SOCKET) 
			{
				CloseHandle(hFile);
				MessageBox(TEXT("通讯失败,请检查设备"));
				return;
			}
			addrClient.sin_family=AF_INET;
			addrClient.sin_addr.s_addr=SAddr;
			addrClient.sin_port=portid;
				
			if (connect(s_sock, (struct sockaddr *)&addrClient, sizeof (addrClient))==SOCKET_ERROR ) 
			{
				CloseHandle(hFile);
				closesocket(s_sock);
				MessageBox(TEXT("通讯失败,请检查设备"));
				return;
			}
			if (send (s_sock, sendbuf, sendlen, 0) == SOCKET_ERROR)
			{
				continue;
			}
			if ((nCnt=recv (s_sock, recbuf, 256, 0)) == SOCKET_ERROR) 
			{
				continue;
			}
			crc=0;
			j=0;
			while (j<nCnt-3)
			{
				crc+=(unsigned char)recbuf[j];
				j++;
			}
			if (crc!=(unsigned char)recbuf[j]*256+(unsigned char)recbuf[j+1]) continue;
			if (recbuf[1]==0x01) 
			{
				continue;
			}
			if (recbuf[1]==0x03)
			{
				CloseHandle(hFile);
				closesocket(s_sock);
				MessageBox(TEXT("上传失败!"));
				return;
			}
			if (recbuf[1]==0x02) break;
		}
		if (i>5)
		{
			CloseHandle(hFile);
			closesocket(s_sock);
			MessageBox(TEXT("通讯失败,请检查设备"));
			return;
		}
		SetFilePointer(hFile,-4,0,FILE_CURRENT);
		WriteFile(hFile,"*",1,&len,NULL);
		SetFilePointer(hFile,3,0,FILE_CURRENT);
	//	k++;
	}
	closesocket(s_sock);
	CloseHandle(hFile);
	UpData();
	MessageBox(TEXT("上传完毕!"));
}
void CMingxi::OnButtonJiaoqi() 
{
	SOCKET s_sock;
	struct sockaddr_in addrClient;
	int nCnt,i,j,sendlen;
	char sendbuf[257],recbuf[257];
	unsigned short crc;
	u_short portid;
	u_long SAddr;
	int taiweilen,caipulen;
	char oprid[21],caipubianhao[11],xuhao[5],liushuihao[11];
	HANDLE hFile;
	unsigned long len;

	hFile = CreateFile(CONFIGFILE, GENERIC_READ, FILE_SHARE_READ,
		  NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
 	if (hFile==INVALID_HANDLE_VALUE) 
	{
		MessageBox(TEXT("打开配置文件失败,请点“配置”按钮重新配置"));
		return;
	}
	ReadFile(hFile,&SAddr,4,&len,NULL);
	ReadFile(hFile,&portid,2,&len,NULL);
	ReadFile(hFile,&taiweilen,4,&len,NULL);
	ReadFile(hFile,&caipulen,4,&len,NULL);
	ReadFile(hFile,oprid,20,&len,NULL);
	CloseHandle(hFile);
	
	POSITION pos= m_list.GetFirstSelectedItemPosition();
	if (pos==NULL) 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -