编辑: 阿拉蕾 | 2015-01-15 |
num0[i ] =
0 ;
a = atof (num0) ;
if (a >
= 0. 009&
&
a <
= 1. 01) break ;
else { setcolor(LIGHTGRAY) ;
outtextxy(x ,y ,num0) ;
i =
0 ;
num0[0 ] = num0[1 ] = num0[2 ] = num0[3 ] = num0[4] =
0 ;
putimage(570 ,150 ,buffer ,XOR PUT) ;
goto ERROR ;
} } else { if (num0[i ] = = 8) {num0[i ] =
0 ;
setcolor(LIGHTBLUE) ;
outtextxy(x ,y ,num0) ;
if (i >
0) i = i -
1 ;
else i =
0 ;
num0[i ] =
0 ;
setcolor(WHITE) ;
outtextxy(x ,y ,num0) ;
} else { if ( (isdigit(num0[i ]) | | num0[i ] = = '
. '
) &
&
(i <
4) ) { + + i ;
setcolor(WHITE) ;
outtextxy(x ,y ,num0) ;
} else { num0[i ] =
0 ;
ERROR : sound(800) ;
delay(100) ;
nosound() ;
} } } } return a ;
} 另外 ,在波形窗口中还包含有一些控制键( ↑, ↓, Esc ,Enter 等) ,这些键的值由函数 get key() 获得 , ↑, ↓ 键用来移动光条 ,Enter 键用来确定 ,而Esc 键表示退 出显示窗口. ③ 西文平台下的汉字显示技术 在西文操作平台下显示汉字的原理是将汉字的 字模从指定的汉字库中提出来 ,放到
1 个点阵数组 中 ,再根据需要在一定的显示模式下逐点进行显示. 虽然不同的汉字平台其 HZK 也不尽相同 ,但一般汉 字库均符合 G B2312 ―
80 的规定 ,1~9 区为图形区 , 10~15 区未作规定 ,16 ~87 区为
一、 二级字库.因此,只要找出汉字各字库对应编码起始位置的计算方 法 ,就可读出各汉字的点阵信息.每个汉字在字库中 的点阵信息 ,其起始地址与区位码有着唯一的对应关 系 ,公式如下 : 首地址 = (区码 - 汉字偏移区) *
94 + (位码 - 1) *
32 其中 ,偏移区根据汉字库不同而异. 而输入汉字文件的存储一般都是用
2 个字节的机 内码 ,它们与区位码也为唯一对应关系 ,其公式为 区码 = (第一字节机内码 &
7FH) -
32 位码 = (第二字节机内码 &
7FH) -
32 这样可以根据输入的汉字 ,推算出其点阵信息 ,然 后以画点方式显示、 放大汉字.本运行窗口设计中使 用Ucdos
311 版中的汉字库 Hzk16 和Hzk24 ,其显示函 数分别为 out 16Hz() 和out 24Hz() . ④ 坐标窗口设计 在波形窗口中还设置了
1 个 运行观测 功能键 , 当选择此键时 ,屏幕的中间将出现另一个小窗口 ,里面 画有坐标轴及标值 ,中间处还画有 0v 标志线.若此 时有数据传送上来 ,则会画出相应的曲线. 2.
2 上、 下位机的串行通信 ① 上位机的串行通信 上位机使用 C 语言编程 ,其数据接收采用等待方 式 ,通信程序如下 : int data rec(void) {unsigned int data ;
for( ;
;
) {data = bioscom(2 ,0 ,com1) ;
if (data <
0x8000) break ;
} return data ;
}
3 2 TDS - ACS 实验系统中虚拟示波器的设计 薛红,等 程序中 ,COM1 已被定义为
0 ,即串口 1. 函数返回
16 位值 ,低8位为接收到的数据 ,高8位是线路状态. ② 下位机的串行通信 在本实验系统的 BIOS 中固化有
1 个用于查询通 信的功能模块 INT 14H ,通过它可编程实现数据的接 收和发送 ,并与上位机配合实现响应曲线的动态显 示. 下位机的数据发送程序如下: send : mov dx ,0000H ........