你问的问题与模拟串口无关。
可显示字符的ASCII的范围为0x20~0x7f,最高位为0。而一个汉字的两个内码的最高位都为1。由此可以判断是字符还是汉字。
根据操作系统的不同汉字内码的范围略有区别。UCDOS的范围为0xa0~0xff。一般为:0xa1~0xff(实际上没有用满到0xff,后面有几个是没有用到的)。
收到两个内码后,就可以算出该汉字在字库中的起始位置:
c1 -= 0xa1;
c2 -= 0xa1;
fseek(cclib16, ((long)c1*94L+(long)c2)*32L, SEEK_SET);
至于说到底是第一个还是第二个,这只有从你的通讯程序中来保证。上面说得好,不同步就会错位。
|