本帖最后由 lujiashun1 于 2016-1-22 22:56 编辑
最近玩LCD,想把字库写入到板载的Q25W128里,用串口助手发送然后在接收中断里写入芯片会丢失很多数据,写入过程耗时比较长,于是自己用C#编了个小软件往该芯片里写数据,每次接收4096个,存入后再传下一组。
1、首先将 写字库到Q25W128文件夹的工程(在spi实验的基础上修改而成)下载到板子里,。
2、打开软件,点击 查找串口,自动查找可用串口,如果有点击打开文件并选择要写入的文件,然后填写写入Q25W128的起始地址,点击写入,会弹出确认信息,确定开始写入,取消不写入,等待写入完成。
然后就可以用了
templete工程是自己编的LCD显示字库程序(4.3寸)字符直接放在font.h里 汉字读取Q25W128的数据然后显示(之前已经把HZK12 HZK16 HZK24写入到芯片里)。
战舰文件写入.rar
(9.03 MB, 下载次数: 2833)
2016-1-22 18:30 上传
点击文件名下载附件
我用两个串口软件互相传送文件试了试 不行 每次接受到的数据个数都不一样 我这个是每次传送4096个字节 然后存储 再传送下一批 直到传完
{
MyInvoke invoke = new MyInvoke(this.Updatetextbox);
try
{
int offset = 0;
FileInfo info = new FileInfo(this.textBox2.Text);
long length = info.Length;
FileStream stream = new FileStream(this.textBox2.Text, FileMode.Open);
byte[] buffer = new byte[length];
stream.Read(buffer, 0, (int) length);
stream.Close();
this.textBox1.Text = length + " ";
this.serialPort1.PortName = this.textBox3.Text;
this.serialPort1.Open();
this.textBox1.Text = "串口打开!。。。 ";
this.textBox1.Text = this.textBox1.Text + "写入命令。。。 ";
this.serialPort1.Write(length + " ");
this.textBox1.Text = this.textBox1.Text + "写入命令完成,等待应答!。。。 ";
this.Refresh();
this.textBox1.Focus();
this.textBox1.Select(this.textBox1.TextLength, 0);
this.textBox1.ScrollToCaret();
while (this.serialPort1.BytesToRead == 0)
{
this.Refresh();
}
if (this.serialPort1.ReadTo(" ") == "start")
{
this.textBox1.Text = this.textBox1.Text + "接收到应答!。。。 ";
this.textBox1.Focus();
this.textBox1.Select(this.textBox1.TextLength, 0);
this.textBox1.ScrollToCaret();
while (offset < length)
{
if (((length - offset) / 0x1000L) >= 1L)
{
this.textBox1.Text = this.textBox1.Text + "准备写入4096个字节!。。。 ";
this.textBox1.Focus();
this.textBox1.Select(this.textBox1.TextLength, 0);
this.textBox1.ScrollToCaret();
this.serialPort1.Write(buffer, offset, 0x1000);
this.textBox1.Text = this.textBox1.Text + "写入4096个字节完成,等待确认!。。。 ";
this.Refresh();
this.textBox1.Focus();
this.textBox1.Select(this.textBox1.TextLength, 0);
this.textBox1.ScrollToCaret();
while (this.serialPort1.BytesToRead == 0)
{
this.Refresh();
}
if (this.serialPort1.ReadTo(" ") == "startnext")
{
this.textBox1.Text = this.textBox1.Text + "stm32存储完成,进行下面数据存储!。。。 ";
this.textBox1.Focus();
this.textBox1.Select(this.textBox1.TextLength, 0);
this.textBox1.ScrollToCaret();
offset += 0x1000;
}
}
else
{
object text = this.textBox1.Text;
this.textBox1.Text = string.Concat(new object[] { text, "准备写入最后", length - offset, "个字节!。。。 " });
this.serialPort1.Write(buffer, offset, ((int) length) - offset);
this.textBox1.Text = this.textBox1.Text + "写入最后字节完成,等待确认!。。。 ";
this.Refresh();
this.textBox1.Focus();
this.textBox1.Select(this.textBox1.TextLength, 0);
this.textBox1.ScrollToCaret();
while (this.serialPort1.BytesToRead == 0)
{
this.Refresh();
}
if (this.serialPort1.ReadTo(" ") == "complete")
{
this.textBox1.Text = this.textBox1.Text + "stm32存储完成!。。。 ";
this.textBox1.Focus();
this.textBox1.Select(this.textBox1.TextLength, 0);
this.textBox1.ScrollToCaret();
offset += 0x1000;
break;
}
}
this.textBox1.Focus();
this.textBox1.Select(this.textBox1.TextLength, 0);
this.textBox1.ScrollToCaret();
}
}
this.serialPort1.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
一周热门 更多>