一:串口传输练习
1:实验目的
将两台笔记本电脑,借助 usb转rs232 模块和杜邦线,建立起串口连接。然后用串口助手等工具软件(带文件传输功能)将一台笔记本上的一个大文件(图片、视频和压缩包软件)传输到另外一台电脑,预算文件大小、波特率和传输时间三者之间的关系,并对比实际传输时间。
2:实验器材
两台电脑(这里与@狗都不写系列共同完成);
杜邦线若干;
TTL转USB串口两个;
3:连接注意
1.两条线的TXD与RXD反接;
2.两者连接的电压应该相同。
4:结果
5.验证
文件大小为13245;
波特率为115200bps
预计时间为:11.51s
实际时间为:12s
结论:传输时有时延
二:点阵汉字的字模读取与显示
1.基本知识
(1)机内码
机内码是汉字在计算机内部使用的代码,就好像是汉字代号,方便计算机识别储存。
国内使用最多的其实是国标码,两者转化关系:机内码是将国标码的每个字节都加上128,即将两个字节的最高位由0改1。
(2)区位码编码规则
GB2312就像一个仓库,共收录6763个汉字,其中一级汉字3755个,二级汉字3008个。就像仓库储存东西会分门别类放置。GB2312对所收汉字进行了“分区”处理,每区含有94个汉字/符号;
这样的分区放置被称为区位码;
储存规则:01-09区为特殊符号10-15区为用户自定义符号区(未编码)16-55区为一级汉字,按拼音排序56-87区为二级汉字,按部首/笔画排序88-94区为用户自定义汉字区(未编码);
2字节编码,高位为0xA1-0xF7,低位为0xA1-0xFE
汉字区域,高位为0xB0-0xF7,低位为0xA1-0xFE
特殊符号,高位为0xA1-0xA9,低位为0xA1-0xFE
国标码 = 区位码 + 2020H;
机内码 = 国标码 + 8080H;
(3)字形数据存储格式
正如在仓库储存东西,会有箱装、听装、盒装、袋装的形式。汉字在电脑中储存也是有一定格式的,下面我们会初步去了解它的格式。
Ⅰ.点阵字库储存
汉字在电脑中是属于图形。
所以每个字节的每个位都代表一个汉字的一个点,每个汉字都是由一个矩形的点阵组成,0代表没有,1代表有点,将0和1分别用不同颜色画出,就形成了一个汉字。
这样的存储称为点阵字库存储。
常用的点阵字库存储有1212, 1414, 16*16三种字库。
Ⅱ.16*16点阵字库
这里介绍一种基础字库:
对于1616的矩阵来说,它所需要的位数共是1616=256个位,每个字节为8位,因此,每个汉字都需要用256/8=32个字节来表示。
即每两个字节代表一行的16个点,共需要16行,显示汉字时,只需一次性读取32个字节,并将每两个字节为一行打印出来,即可形成一个汉字。
2.Ubuntu下调用opencv库编程显示图片和学号姓名
创建一个文件夹test里面放一张照片1.jpg、ASCio816.zf、HZKf2424.hz
自己创建一个logo.txt
代码:
#include<iostream>
#include<opencv/cv.h>
#include"opencv2/opencv.hpp"
#include<opencv/cxcore.h>
#include<opencv/highgui.h>
#include<math.h>
using namespace cv;
using namespace std;
void paint_chinese(Mat& image,int x_offset,int y_offset,unsigned long offset);
void paint_ascii(Mat& image,int x_offset,int y_offset,unsigned long offset);
void put_text_to_image(int x_offset,int y_offset,String image_path,char* logo_path);
int main(){
String image_path="/home/test/1.jpg";
char* logo_path=(char*)"/home/test/logo.txt";
put_text_to_image(450,750,image_path,logo_path);//安排文字从图片像素坐标(450,750)开始显示
return 0