定义写函数
extern "C" __int16 __stdcall writecard(int icDev,UCHAR *cardNo)
{
if(icDev!=514) return error_comp; //错误厂商 CString strfirst,strfun,strprice,stramount,strmoney;
UCHAR buf[128];
UCHAR a;
a=cardNo[0]*16+cardNo[1];
buf[0]=a;
a=cardNo[2]*16+cardNo[3];
buf[1]=a;
a=cardNo[4]*16+cardNo[5];
buf[2]=a;
a=cardNo[6]*16+cardNo[7];
buf[3]=a;
swr_24c01a(0,0,4,buf); return 0;
}
编辑未报错,调试报access violation UpdateData(true);
int ret=writecard(514,(UCHAR *)m_cardsn.GetBuffer(0));
if(ret!=0)
{
AfxMessageBox("写卡失败");
}m_cardsn为cstring类型
extern "C" __int16 __stdcall writecard(int icDev,UCHAR *cardNo)
{
if(icDev!=514) return error_comp; //错误厂商 CString strfirst,strfun,strprice,stramount,strmoney;
UCHAR buf[128];
UCHAR a;
a=cardNo[0]*16+cardNo[1];
buf[0]=a;
a=cardNo[2]*16+cardNo[3];
buf[1]=a;
a=cardNo[4]*16+cardNo[5];
buf[2]=a;
a=cardNo[6]*16+cardNo[7];
buf[3]=a;
swr_24c01a(0,0,4,buf); return 0;
}
编辑未报错,调试报access violation UpdateData(true);
int ret=writecard(514,(UCHAR *)m_cardsn.GetBuffer(0));
if(ret!=0)
{
AfxMessageBox("写卡失败");
}m_cardsn为cstring类型
解决方案 »
- vc中,树控件有复选框,如何设置某个节点只能随着父节点选中而选中且不能通过手动改动该子节点?
- 关于垂直滚动条
- 如何用CreateFile,WriteFile,ReadFile,读写一个DWORD?
- VS下的MFC代码的汉字注释变成了乱码,怎么恢复?
- 把多文档程序修改成单文档的问题
- jpg文件格式
- 菜鸟求救:ADO接口访问MS SQL数据库时生成的有关类
- 怎样用程序代码在SQL_server中建立数据库?急!!!
- vc6.0工程创建加载和使用.lib文件的问题
- VC6.0中ADO访问SQL sever数据库表提示出错,请高手进来看看!
- 关于MFC的winsock如何在不同窗口保持连接状态
- ado连接动态表
或者int ret=writecard(514,(UCHAR *)m_cardsn.GetBuffer(0));之前判断m_cardsn串的长度不小于8
改成,(UCHAR *)(LPCTSTR)m_cardsn 看看
不要用GetBuff
直接传m_cardsn试一下
或者声明一个UCHAR数组然后把字符串拷过去
2、GetBuffer用完后需要ReleaseBuffer,对于读取操作最好不要用GetBuffer,可以把参数定义为const char*类型,直接传CString变量。
3、从你的代码来看,貌似是输入卡号,经过处理后传给另一函数。需要注意,输入的内容是字符串而不是数值,如果要使用数值则需要转换一下,0~9这10个数字对应的字符值是0x30~0x39,字符值减去0x30就是对应的数值。
__int16 __stdcall writecard(int icDev,UCHAR *cardNo, int len);