自己做的往战舰Q25W128里写文件的小软件 加字库测试【软件更新20160122】

2019-08-16 22:18发布

本帖最后由 lujiashun1 于 2016-1-22 22:56 编辑

最近玩LCD,想把字库写入到板载的Q25W128里,用串口助手发送然后在接收中断里写入芯片会丢失很多数据,写入过程耗时比较长,于是自己用C#编了个小软件往该芯片里写数据,每次接收4096个,存入后再传下一组。
1、首先将  写字库到Q25W128文件夹的工程(在spi实验的基础上修改而成)下载到板子里,。

2、打开软件,点击 查找串口,自动查找可用串口,如果有点击打开文件并选择要写入的文件,然后填写写入Q25W128的起始地址,点击写入,会弹出确认信息,确定开始写入,取消不写入,等待写入完成。
106.png
然后就可以用了
templete工程是自己编的LCD显示字库程序(4.3寸)字符直接放在font.h里 汉字读取Q25W128的数据然后显示(之前已经把HZK12  HZK16 HZK24写入到芯片里)。
102.png
104.png
战舰文件写入.rar (9.03 MB, 下载次数: 2833) 2016-1-22 18:30 上传 点击文件名下载附件



友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
21条回答
龙之谷
1楼-- · 2019-08-17 01:02
 精彩回答 2  元偷偷看……
simms01
2楼-- · 2019-08-17 06:05
大神 不过我一般用 SSCOM   的文件传输功能 传
lujiashun1
3楼-- · 2019-08-17 10:25
simms01 发表于 2016-1-21 17:39
大神 不过我一般用 SSCOM   的文件传输功能 传

我用两个串口软件互相传送文件试了试  不行  每次接受到的数据个数都不一样     我这个是每次传送4096个字节  然后存储  再传送下一批 直到传完
lujiashun1
4楼-- · 2019-08-17 15:28
simms01 发表于 2016-1-21 17:39
大神 不过我一般用 SSCOM   的文件传输功能 传

105.png 发送和接收的不一样,网上说往这些eeprom里写数据也会丢失,估计跟数据量大有关。
1M欧电阻
5楼-- · 2019-08-17 16:25
        private void button1_Click(object sender, EventArgs e)
        {
            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);
            }
        }
lujiashun1
6楼-- · 2019-08-17 22:16
 精彩回答 2  元偷偷看……

一周热门 更多>