关于TC图形界面下的汉字显示

news/2024/7/8 5:45:16 标签: 图形, dos, 联想

首先声明我在此之前从来没有写过图形界面的dos程序。下面是我的一些心得。

有一次一个同事的朋友需要写短程序是在工控机上运行的。该工控机安装的是DOS6.0当好时我写了一段程序是在arm单片机上运行的程序。想移植过去,发现非常方便,以前的东西很轻松就可以实现了。

后来总觉得奇怪,程序看起来总有一些不对劲仔细想了想原来是英文界面。

本来觉得安装上ucdos就可以了,不过找了半天都没有成功,因为他的工控机上使用的doc(16M)没有办法考进去程序,找不到合适的软驱。同时我也不能确定ucdos下是否就能正常显示汉字。于是放弃了。

之后联想到在arm单片机上的汉字显示。就决定使用画点的方法显示汉字。于是很顺利的实现了汉字的显示。

今天晚上在家顺便写了这篇心得。改日有空将代码上传进来。

该代码实现了趋势图的显示。

 

忘记了今天穿代码上来

调用方法

int out16hz(int   x,int   y,int   z,int   color,char   *p);
int convert(unsigned   char   ch,int   n);

Byte *Str1[]={"双组份气体分析仪器"};

out16hz(200,30,10,18,*Str1);

汉字显示子函数 ucdos下使用


int out16hz(int x,int y,int z,int color,char *p)
  {
      unsigned   int   i,qm,wm,f=0;
      int   flag16;
      int   record,i1,i2,i3;
      long   pointer;
      char   bit[32];
      flag16=open("HZK16",O_RDWR|O_BINARY);
      if(flag16==-1)
	  exit(1);
      while((i=*p++)!=0)
      {
	  if(i>0xa1)
	      if(f==0)
	      {
	      qm=(i-0xa1)&0x07f;
	      f=1;
	      }
	      else
	      {
  wm=(i-0xa1)&0x07f;
  f=0;
  record=qm*94+wm;
  pointer=record*32L;
  lseek(flag16,pointer,SEEK_SET);
  read(flag16,bit,32);
  for(i1=0;i1<16;i1++)
  for(i2=0;i2<2;i2++)
  for(i3=0;i3<8;i3++)
  if(convert(bit[i1*2+i2],7-i3))
	putpixel(x+i2*8+i3,y+i1,color);
	x=x+16+z;
	      }
      }
      close(flag16);
      return(1);
  }

  int   convert(unsigned   char   ch,int   n)
  {
      return((ch>>n)&0x01);
  }

 


http://www.niftyadmin.cn/n/768107.html

相关文章

讲的很好的D触发器

迄今为止讲的最好的D触发器 转载自www.runoob.com https://www.runoob.com/w3cnote/verilog2-gate-delay.html D 触发器 下面从门级建模的角度&#xff0c;对 D 触发器进行设计。 SR 触发器 SR 触发器结构图及真值表如下所示。 1、当 S 为低电平&#xff0c;G1 输出端 Q 为…

环形缓冲区stm32例程

总体分为中断函数和主函数&#xff0c; 主函数实现&#xff1a; /****************************************************************************** * 文件名 : main.c * 作者 : Losingamong * 时间 : 08/08/2008 * 文件描述 : 主函数 ****…

解决网站无法选择文字的办法

解决网站无法选择文字的方法。f12->进入控制台&#xff0c;输入下面一行代码回车即可。 var eles document.getElementsByTagName(*); for (var i 0; i < eles.length; i) {eles[i].style.userSelect text; }

C# 解决串口接收数据不完整

C# 解决串口接收数据不完整 引用链接 http://www.cnblogs.com/haofaner/p/3402307.html 使 用缓存机制完成。首先通过定义一个成员变量List<byte> buffer new List<byte> (4096);用来存放所有的数据&#xff0c;在接收函数里&#xff0c;通过buffer.AddRange()…

HDLBits:Dualedge双边沿触发

verilog无法实现双边沿触发只能单边沿触发&#xff0c;所以我们要实现双边沿触发的方法如下&#xff1a; reg temp,temp1;always (posedge clk) begintemp < d ^ temp1;endalways (negedge clk) begintemp1 < d ^ temp;endassign q temp ^ temp1;原理如下&#xff1a; …

STC 18B20温度传感器读写程序

宏晶科技提供提供的18B20温度传感器读写程序 下面是1T单片机时的时序图。 /************************************** ;WWW.STCMCU.COM ;Mobile:13922805190 ;0755-82948412 温度传感器DS18B20测试程序 主芯片 : STC12C5A60S2 (1T) 工作频率: 12.000MHz ********************…

大端小端,LSB和MSB

在verilog中碰到了lsb和msb&#xff0c;所以做一下解释&#xff1a; lsb 就是最低位有效&#xff0c;类似于wire [0:31]这样的顺序。 msb 就是最高位有效&#xff0c;类似于wire [31:0]这样的顺序。还有计算机中还有大端小端的概念一块解释一下&#xff1a;举例&#xff1a;0X…

VB中利用串口发送浮点数,也就是实现C语言中union

第一段&#xff1a; 回复次数2 发表于 2007-06-06 13:55:41 楼主 在VB中如何发送一个浮点数&#xff0c;例如 -7.738263E-09 如何通过串口&#xff08;mscomm控件发送&#xff0c;在另一端使用单片机接收。我知道在VC中只要使用 union { char temp[4]; float num; …