串口存储
A. 串口发送给单片机的数据的存储格式是怎样的
串口发送给单片机的数据的存储在SBUF中,格式是高位在前。比如说发送1或十六进制数0x01,到单片机后,在SBUF中的存储格式是:
D7 D6 D5 D4 D3 D2 D1 D0
0 0 0 0 0 0 0 1
B. 串口接收数据怎样存储在数组中
可以加一个整数索引,对加入的数据长度进行标识。更好的是对这个数据进行扩展,变成一个堆栈,对其进行操作。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include<stdio.h>
#include<string.h>
#define byte unsigned char
byte queue_buf[20], idx = 0;
void push(byte n) //当串口每接收一个数据,就用push添加一个数据
{
if (idx < 20)
queue_buf[idx++] = n;
}
byte pop()
{
byte ret = 0;
if (idx-- > 0)
{
ret = queue_buf[0];
memcpy(queue_buf, &queue_buf[1], idx);
}
return ret;
}
byte size()
{
return idx;
}
byte clear()
{
memset(queue_buf, 0, 20);
idx = 0;
}
C. 串口接收数据怎样存储在数组中呢
Dim Buffer as Variant 表示声明了一个Buffer变量,但是这个Buffer变量的类型不确定,可以是Long、Integer、Double、Object、String以及数组等等,Buffer变量的类型由编译器自行判断与转换。
Dim Buffer(100) as Variant 表示声明了一个数组Buffer,该数组有100个成员,数组的每一个成员都没有指定具体的数据类型,由编译器自行判断与转换
Dim receive(100) as Byte 表示声明了一个数组receive,该数组有100个成员,数组的每一个成员都是Byte型。
Dim Buffer() as Byte 表示声明了一个数组Buffer,该数组成员数目未知,数组的每一个成员都是Byte型。在确定数组成员数量之前是不能通过Buffer(xx)的这种方式访问Buffer里的成员的。
Dim Buffer() as Byte
.......
'接受
........
Buffer = Mscomm.Input
这种方法实际上是把Mscomm接收缓存里的所有数据读出来并保存到Buffer数组中,Buffer数组的大小由Mscomm接收缓存实际缓存的数据量决定,因为Mscomm的接收缓存里实际的数据量是不确定的,所以不能使用
Dim Receive(100) as Byte
.......
接受数据
Receive = Mscomm.Input
这样的方式。
Dim Receive(100) as Byte
.......
接受数据
Receive(i) = Mscomm.Input
这样是可以的,这样实际上是一次从Mscomm的接收缓存里读一个字节的数据,你这样做不行估计是因为数据传输速率和RThreshold设定的问题,因为赋值语句运行的时间要远比串口传输速率快很多倍,所以你必须等Mscomm的接收缓存里有100个字节以上的数据时你才能通过循环用Mscomm.Input依次读出100个字节的数据,否则就肯定会出错,所以如果你把RThreshold设定为100,也就是每收到100个字节的数据触发一次OnComm事件就可以通过Receive(i) = Mscomm.Input把数据读出来。
D. 迪文T5L系列串口屏的片内FLASH存储空间如何布局利用
迪文T5L系列串口屏的片内FLASH存储空间大小一般采用16Mbytes和8Mbytes,以及部分用户为了降低成本的4Mbytes,16Mbytes Flash 存储器可以看作是分割成 64 个容量固定为 256KB 的子空间,可存放的文件 ID 号范围为 0-63(8Mbtes和4Mbytes的Flash存放文件ID号范围分别为0-31,0-15)。存储器根据储存的文件内容不同,主要分为两部分:
(1)4-12MB 的字库空间,可以保存 BIN、HZK、DZK 格式文件,文件 ID 范围 00~47。
(2)4-12MB 的图片空间,可以保存背景图片库 ICL 文件、图标库 ICL 文件存储空间,文件 ID 范围 16~63。
注意字库空间和图片空间有重叠部分,ID 命名时需注意避免冲突。迪文T5L系列串口屏的片内FLASH存储空间大小一般采用16Mbytes和8Mbytes,以及部分用户为了降低成本的4Mbytes,16Mbytes Flash 存储器可以看作是分割成 64 个容量固定为 256KB 的子空间,可存放的文件 ID 号范围为 0-63(8Mbtes和4Mbytes的Flash存放文件ID号范围分别为0-31,0-15)。存储器根据储存的文件内容不同,主要分为两部分:
(1)4-12MB 的字库空间,可以保存 BIN、HZK、DZK 格式文件,文件 ID 范围 00~47。
(2)4-12MB 的图片空间,可以保存背景图片库 ICL 文件、图标库 ICL 文件存储空间,文件 ID 范围 16~63。
注意字库空间和图片空间有重叠部分,ID 命名时需注意避免冲突。
E. 怎样将串口接收到的数据存到数据库中
这是两个步骤的内容。首先是通讯,将串口接收的数据(十六进制数或ASCII码),按照通讯规约进行解析,解析输出所需的数据;然后是数据存储,这个过程就是一个数据入库过程,与是否串口接收没有大的关系,编写连接数据库代码,写入数据库即可;最后,由于串口接收数据是实时通讯,而数据的解析和写库需要时间,程序的时序应安排好,防止数据解析和写库时间过长造成数据丢失。