📄 manipulate.cpp
字号:
// Manipulate.cpp : implementation file
//
#include "stdafx.h"
#include "标签数据录入系统.h"
#include "Manipulate.h"
#include "MainFrm.h"
#ifdef _DEBUG
#include "globals.h"
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
extern CDatabase db;
CString date;
CString temp;
bool flag;
CString rdata;
CString seq[16],seqnum;
CString typeID,typecodeID,partscodeID,repaireID,yearID,monthID,code;
int nPort = 0;
HANDLE hCom = 0;
CString strUID = _T("");
char UIDBuf[600] ;
/////////////////////////////////////////////////////////////////////////////
// Manipulate dialog
extern "C" __declspec(dllexport) HANDLE __stdcall OpenCom(int nPort,long nBaudRate,
int nParity,
int nDataBits,int nStopBit,
int nFlowCtl);
extern "C" __declspec(dllexport) void __stdcall CloseCom(HANDLE hCom);
extern "C" __declspec(dllexport) BOOL __stdcall WriteSingleBlock(HANDLE hCom,
BYTE Addr, BYTE Mode,BYTE *UID,BYTE BlockAddr,
char *WriteData);
extern "C" _declspec(dllexport) BOOL __stdcall DeviceInfo(HANDLE hCom, BYTE Addr,char* Sw_Rev,
char* D_Rev,char* Hw_Type,
char* Sw_Type,char* Tr_Type);
extern "C" _declspec(dllexport) BOOL __stdcall WriteSingleBlock(HANDLE hCom,
BYTE Addr, BYTE Mode,BYTE *UID,BYTE BlockAddr,
char *WriteData);
extern "C" _declspec(dllexport) BOOL __stdcall ReadTagData(HANDLE hCom,
BYTE Addr, BYTE Mode,BYTE *UID,
BYTE BlockAddr,BYTE nBlockNum,
char *ReadData);
extern "C" _declspec(dllexport) void __stdcall CloseCom(HANDLE hCom);
extern "C" _declspec(dllexport) BOOL __stdcall DetectTagUID(HANDLE hCom,BYTE Addr,char* ReadUID,int &LableNum);
extern "C" _declspec(dllexport) BOOL __stdcall SelectTag(HANDLE hCom,
BYTE Addr,
BYTE *UID,
BOOL bFlag);
extern "C" _declspec(dllexport) BOOL __stdcall WriteSingleBlock(HANDLE hCom,
BYTE Addr, BYTE Mode,BYTE *UID,BYTE BlockAddr,
char *WriteData);
Manipulate::Manipulate(CWnd* pParent /*=NULL*/)
: CDialog(Manipulate::IDD, pParent)
{
//{{AFX_DATA_INIT(Manipulate)
m_name = _T("");
m_sequence = _T("");
m_user = _T("");
m_record = _T("");
m_pro = _T("");
m_xinpian = _T("");
//}}AFX_DATA_INIT
}
void Manipulate::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(Manipulate)
DDX_Control(pDX, IDC_DATETIMEPICKER1, m_date);
DDX_Control(pDX, IDC_COMYEAR, m_year);
DDX_Control(pDX, IDC_COMPARTCODE, m_partscode);
DDX_Control(pDX, IDC_COMMATH, m_manth);
DDX_Control(pDX, IDC_COMTYPECODE, m_typecode);
DDX_Control(pDX, IDC_COMTYPE, m_type);
DDX_Control(pDX, IDC_COMREP, m_repaire);
DDX_CBString(pDX, IDC_COMYEAR, m_cyear);
DDX_CBString(pDX, IDC_COMPARTCODE, m_cpartscode);
DDX_CBString(pDX, IDC_COMMATH, m_cmanth);
DDX_CBString(pDX, IDC_COMTYPECODE, m_ctypecode);
DDX_CBString(pDX, IDC_COMTYPE, m_ctype);
DDX_CBString(pDX, IDC_COMREP, m_crepaire);
DDX_Text(pDX, IDC_NAME, m_name);
DDX_Text(pDX, IDC_SEQENCE, m_sequence);
DDX_Text(pDX, IDC_USER, m_user);
DDX_Text(pDX, IDC_RECORD, m_record);
DDX_Text(pDX, IDC_PRO, m_pro);
DDX_Text(pDX, IDC_XINPIAN, m_xinpian);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(Manipulate, CDialog)
//{{AFX_MSG_MAP(Manipulate)
ON_NOTIFY(DTN_DATETIMECHANGE, IDC_DATETIMEPICKER1, OnDatetimechangeDatetimepicker1)
ON_BN_CLICKED(IDC_WRITE, OnWrite)
ON_BN_CLICKED(IDC_CLEAR, OnClear)
ON_BN_CLICKED(IDC_WRITECOPY, OnWritecopy)
ON_BN_CLICKED(IDC_CHANGE, OnChange)
ON_BN_CLICKED(IDC_CANCEL, OnCancel)
ON_BN_CLICKED(IDC_READ, OnRead)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// Manipulate message handlers
void Manipulate::OnCancel()
{
// TODO: Add extra cleanup here
//delete pss1;
CMainFrame *fm;
fm = (CMainFrame *)AfxGetMainWnd();
fm->SendMessage(WM_CLOSE);
// db.Close();
CDialog::OnCancel();
}
BOOL Manipulate::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
//////打开数据库
if(!db.Open("桌面数据读写"))
{
AfxMessageBox("打开数据库失败!"); //
return false; // 连接数据库
}
//打开串口
int iTagCnt = 0;
char Sw_Rev [50];
char D_Rev[50];
char Hw_Type[50];
char Sw_Type[50];
char Tr_Type[50];
//初始化
memset(Sw_Rev, 0, 50);
memset(D_Rev, 0, 50);
memset(Hw_Type, 0, 50);
memset(Sw_Type, 0, 50);
memset(Tr_Type, 0, 50);
nPort=1;
hCom = OpenCom(nPort,9600,2,8,0,0);
if(hCom == INVALID_HANDLE_VALUE)
{
AfxMessageBox("打开串口1失败!");
}
else
{
if( DeviceInfo(hCom,0x00, Sw_Rev,D_Rev,Hw_Type, Sw_Type,Tr_Type))
{
// AfxMessageBox("读写器(串口1)已经打开!");
int LableNum = 1;
char readdata[600];
memset(UIDBuf, 0, 600);
memset(readdata, 0, 600);
if(!DetectTagUID(hCom, 0x00,UIDBuf,LableNum))
{
AfxMessageBox("没有检测到标签");
}
else
{
CString q;
q.Format("检测到%d个标签",LableNum);
AfxMessageBox(q);
}
}
else
{
nPort=2;
hCom = OpenCom(nPort,9600,2,8,0,0);
if(hCom == INVALID_HANDLE_VALUE)
{
AfxMessageBox("打开串口2失败!");
}
else if( DeviceInfo(hCom,0x00, Sw_Rev,D_Rev,Hw_Type, Sw_Type,Tr_Type))
{
// AfxMessageBox("读写器(串口2)已经打开!");
int LableNum = 0;
memset(UIDBuf, 0, 600);
char readdata[600];
memset(readdata, 0, 600);
char writedata[4],wd[16]="woshiyigexue";
memccpy( writedata, wd, wd[3],4);
if(!DetectTagUID(hCom, 0x00,UIDBuf,LableNum))
{
AfxMessageBox("没有检测到标签");
}
else
{
CString q;
q.Format("检测到%d个标签",LableNum);
AfxMessageBox(q);
}
}
else AfxMessageBox("读写器打开失败!");
}
}
CRecordset rs(&db); // 数据集
CString str;
// 设置部门下拉框所取的值为产品分类表表中的值
rs.Open(CRecordset::forwardOnly, "select 时间 from 保修期");
while(!rs.IsEOF())
{
rs.GetFieldValue("时间", str);
m_repaire.AddString(str);
rs.MoveNext();
}
rs.Close();
rs.Open(CRecordset::forwardOnly, "select 产品名称 from 产品分类表");
while(!rs.IsEOF())
{
rs.GetFieldValue("产品名称", str);
m_typecode.AddString(str);
rs.MoveNext();
}
rs.Close();
rs.Open(CRecordset::forwardOnly, "select 部件名称 from 部件类型表");
while(!rs.IsEOF())
{
rs.GetFieldValue("部件名称", str);
m_partscode.AddString(str);
rs.MoveNext();
}
rs.Close();
rs.Open(CRecordset::forwardOnly, "select 年 from 年份表");
while(!rs.IsEOF())
{
rs.GetFieldValue("年", str);
m_year.AddString(str);
rs.MoveNext();
}
rs.Close();
rs.Open(CRecordset::forwardOnly, "select 月份 from 月份表");
while(!rs.IsEOF())
{
rs.GetFieldValue("月份", str);
m_manth.AddString(str);
rs.MoveNext();
}
rs.Close();
// m_time.SetFo
COleDateTime dtMin(1995,1,1,0,0,0);
COleDateTime dtMax(2005,12,31,23,59,59);
m_date.SetRange(&dtMin,&dtMax);
// CDateTimeCtrl
//初始化
m_xinpian=_T("");
// m_date=_T("");
m_name=_T("广汉科峰电子有限责任公司");
m_pro=_T("");
m_user=_T("");
m_record=_T("");
m_type.SetCurSel(-1);
m_typecode.SetCurSel(-1);
m_partscode.SetCurSel(-1);
m_manth.SetCurSel(-1);
m_repaire.SetCurSel(-1);
UpdateData(FALSE);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void Manipulate::OnDatetimechangeDatetimepicker1(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
// CString date;
int year;
int month;
int day;
COleDateTime dtSel;
m_date.GetTime(dtSel);
year=dtSel.GetYear();
month=dtSel.GetMonth();
day=dtSel.GetDay();
if(month<10&&day<10)
{
date.Format("%d0%d0%d",year,month,day);
}
else if(month<10&&day>=10)
{
date.Format("%d0%d%d",year,month,day);
}
else if(month>9&day<10)
{
date.Format("%d%d0%d",year,month,day);
}
else
date.Format("%d%d%d",year,month,day);
// AfxMessageBox(date);
*pResult = 0;
}
void Manipulate::OnWrite()
{
// TODO: Add your control notification handler code here
/////////////////读取标签的UID
///读取时间
int year;
int month;
int day;
COleDateTime dtSel;
m_date.GetTime(dtSel);
year=dtSel.GetYear();
month=dtSel.GetMonth();
day=dtSel.GetDay();
if(month<10&&day<10)
{
date.Format("%d0%d0%d",year,month,day);
}
else if(month<10&&day>=10)
{
date.Format("%d0%d%d",year,month,day);
}
else if(month>9&day<10)
{
date.Format("%d%d0%d",year,month,day);
}
else
date.Format("%d%d%d",year,month,day);
// AfxMessageBox(date);
int k=0;
CString strUID = _T("");
int LableNum = 0;
char UIDBuf[600];
memset(UIDBuf, 0, 600);
if(DetectTagUID(hCom, 0x00,UIDBuf,LableNum))
{
m_xinpian.Format(UIDBuf);
// UpdateData(FALSE);
}
else
{
AfxMessageBox("没有检测到标签%d",LableNum);
}
CString str,strSQL;
CRecordset rs(&db); // 数据集
UpdateData(); // 更新数据
if(m_pro.IsEmpty()) // 制造商为空则返回
{
AfxMessageBox("制造商不能为空!");
return;
}
//UpdateData(TRUE);
if(m_name.IsEmpty()) // 产品名称为空则返回
{
AfxMessageBox("产品名称不能为空!");
return;
}
rs.Open(CRecordset::forwardOnly,
"select 分类码 from 产品分类表 where 产品名称='" + m_ctypecode +"'");
rs.GetFieldValue("分类码", typecodeID);
rs.Close();
rs.Open(CRecordset::forwardOnly,
"select 部件类型码 from 部件类型表 where 部件名称='" + m_cpartscode +"'");
rs.GetFieldValue("部件类型码", partscodeID);
rs.Close();
rs.Open(CRecordset::forwardOnly,
"select 年号 from 年份表 where 年='" + m_cyear +"'");
rs.GetFieldValue("年号", yearID);
rs.Close();
rs.Open(CRecordset::forwardOnly,
"select 月号 from 月份表 where 月份='" + m_cmanth +"'");
rs.GetFieldValue("月号", monthID);
rs.Close();
rs.Open(CRecordset::forwardOnly,
"select 保修号 from 保修期 where 时间='" + m_crepaire +"'");
rs.GetFieldValue("保修号", repaireID);
rs.Close();
code.Format("%s%s%s%s%s",m_ctype,typecodeID,partscodeID,yearID,monthID);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -