链接好像打不开啊使用HZK16 需要先计算好偏移地址
hzIndex = ((Qu - 0xA1) * 94) + (Wei - 0xA1)); //区位码转换到索引
dwOffset = hzIndex * 32; //(16*16/8)
然后从文件头偏移dwOffset个字节,读出32个字节,就是一个完整的汉字点阵另外字库点阵是16进制的,因此发送到时候得做好协议,或者转为ASCII码,得让单片机识别出哪里是开始
hzIndex = ((Qu - 0xA1) * 94) + (Wei - 0xA1)); //区位码转换到索引
dwOffset = hzIndex * 32; //(16*16/8)
然后从文件头偏移dwOffset个字节,读出32个字节,就是一个完整的汉字点阵另外字库点阵是16进制的,因此发送到时候得做好协议,或者转为ASCII码,得让单片机识别出哪里是开始
解决方案 »
- 应用程序移植到网页上库文件如何处理?
- 在对话框之间如何传递数据库指针,名位大哥帮帮忙
- 请教:如何在VC++中连接SQL Server2000数据库?!谢谢,急急急急!
- UPDATE_COMMAND_UI的问题。请指教。
- 请教:用VC60、MFC编的程序,发行版如何才能不用另拷如MFC42.dll之类的动态库?
- 请问在拔下网线的情况下怎么提取本机的MAC地址
- cryptopp5.0如何使用?
- 如何禁止点击菜单多次弹出对话框????????
- 我想做一个多方会议系统,请大家告诉我这方面的资料
- MFC中读取excel中的数据存在问题
- 执行CDC *pDC=GetDC();这行时出错:Access violation reading location 0x00000020.
- 把缓冲区客户端的信息,再发回客户端,数据丢失。
不知c++是打印不出还是发送不出
也许如楼上所说,得把十六进制转化成ASCII码~
{
unsigned char i=0xa1,j=0xa1;
unsigned char qh,wh;
unsigned long offset;
char *p = m_strSendData.GetBuffer(m_strSendData.GetLength());//获得汉字区位码所在指针
unsigned char q = p[0], w = p[1];
qh=q-0xa0;
wh=w-0xa0;
offset=((qh-1)*94+(wh-1))*32L; //计算在自摸中偏移量
FILE *fd;
fd=fopen( "HZK16 ", "rb ");
fseek(fd,offset,SEEK_SET);
memset(cBuf, 0, 1024);
fread(cBuf,32,1,fd);
fclose(fd);
先不要用外面输入的汉字设置 q = 0xC4; w = 0xE3;看看能不能输出来 “你”
而“我”字依然好着,并且把 fread(cBuf,32,1,fd); 中每次读取32个字节改为128,还是只有一个▲
通过串口工具检测,输入“你”字时只发送了一个字节,而你字的32b字模中的第一个是▲
所有要么是后面的没读到,要么没法出去
敢问在mfc调试中怎么去查看一个数组中的元素个数?
http://download.csdn.net/detail/schlafenhamster/2287541
0分
因为从hzk16读到的是asc吧,有得不能发送,我就给读到的每个都加上0xa1,貌似都能发送了
具体原因,我也不是很明白~
按照mscom控件的setoutput函数说明,当发送二进制数据时,要将字节型数据存入参数变量中,
于是从网上搜了下,改成了下面的程序进行了转换:COleVariant vSendData2;
CByteArray OutBuf;
OutBuf.SetSize(m_strSendData.GetLength()*32);//设置大小
int i;
for(i = 0; i < m_strSendData.GetLength()*32; i++)
OutBuf[i] = cBuf[i]; //转换类型
vSendData2 = OutBuf; //转换发送数据类型
m_ctrMSCom.SetOutput(vSendData2);//发送数据