ljj17173

Winfirm程序 相关之串口通讯+蓝牙模块+二位图像传输上位机的设计
飞思卡尔智能车竞赛准备开始了,最近也有不少学长在进行赛道调试等,最近就接到了学长一个要求就是做一个蓝牙的上位机做摄...
扫描右侧二维码阅读全文
20
2018/07

Winfirm程序 相关之串口通讯+蓝牙模块+二位图像传输上位机的设计

飞思卡尔智能车竞赛准备开始了,最近也有不少学长在进行赛道调试等,最近就接到了学长一个要求就是做一个蓝牙的上位机做摄像头组来做无线数据传输调试。
技术取之于网络,也要回馈于网络,将蓝牙串口相关的上位机的制作过程进行一些分享。

完成后大概是这样子的:

SCFM0.png
这是一个,摄像头二值化,蓝牙赛道数据传输的上位机(一次传输22560个二值化数据)

当时只是想接收摄像头传回的二值化信息,稍微转换一下,显示即可
流程是:
新建一个winfrom工程-->添加串口通讯相关代码-->在界面设计中添加相关设置选项-->添加一个richbox-->添加接收转换相关代码-->进行测试-->测试成功-->添加一个picturebox和相关代码-->添加数据导入导出-->完成

Windows会为蓝牙模块虚拟一个COM口,设置好蓝牙模块,并进行配对就可以在蓝牙设置中看到COM口了(我使用的是HC-05),连接COM口即与蓝牙模块进行通讯。
未命名图片.png

下面贴相关代码,底下贴工程文件。

串口通讯初始化:

需要(using System.IO.Ports;)
{% codeblock lang:C# %}
serialPort1.DataReceived += sriaerialPort1_DataReceived;

        //蓝牙端口信息初始化
        serialPort1.ReceivedBytesThreshold = 1;
        serialPort1.BaudRate = 115200;
        serialPort1.PortName = "COM1";
        serialPort1.Parity = Parity.Even;
        serialPort1.DataBits = 8;
        serialPort1.StopBits = StopBits.One;

{% endcodeblock %}

打开串口通讯:(蓝牙连接按钮)

{% codeblock lang:C# %}
private void button1_Click(object sender, EventArgs e)

    {
        if (button1.Text == "打开串口")
        {
            try
            {
                serialPort1.Open();
                button1.Text = "关闭串口";
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
        else
        {
            serialPort1.Close();
            button1.Text = "打开串口";
        }
        }

{% endcodeblock %}

发送数据给模块:

{% codeblock lang:C# %}
private void button2_Click(object sender, EventArgs e)

    {
        string serialStringTemp = this.textBox1.Text;
        this.serialPort1.WriteLine(serialStringTemp);
        Thread.Sleep(150);
    }

{% endcodeblock %}

接收蓝牙数据事件,并将接收到的展示于richbox:

{% codeblock lang:C# %}

    void sriaerialPort1_DataReceived(object sender,System.IO.Ports.SerialDataReceivedEventArgs e)
    {
        string seriaReadString = serialPort1.ReadExisting();
        this.richTextBox1.Invoke(new MethodInvoker(delegate { this.richTextBox1.AppendText(seriaReadString); }));
    }

{% endcodeblock %}

picturebox绘图相关:

{% codeblock lang:C# %}
void huitu()

    {
        int i, j, k = 0;
        for (i = 0; i < 119; i++)
        {
            for (j = 0; j < 188; j++)
            {
                //Color newColorxy = Color.FromArgb(richTextBox1.Text[k], richTextBox1.Text[k], richTextBox1.Text[k]);
                //Towing.SetPixel(Row, i * 2, newColorH);
                if (richTextBox1.Text[k] == '1')
                {
                    Towimg.SetPixel(j, i, Color.FromArgb(255, 255, 255));
                }
                else
                {
                    Towimg.SetPixel(j, i, Color.FromArgb(0, 0, 0));
                }
                k++;
            }
            //this.richTextBox1.Text = this.richTextBox1.Text.Insert(k, "\r\n");
            //k++;
        }
        pictureBox1.Image = Towimg;
    }

{% endcodeblock %}

参考资料:

https://blog.csdn.net/u011964923/article/details/50967351
https://www.cnblogs.com/zjutlitao/p/3886826.html

工程文件:

链接:https://pan.baidu.com/s/1L10ITlS2f8tBxw9S2TqdGQ 密码:wx8p

Last modification:January 24th, 2019 at 10:49 pm
If you think my article is useful to you, please feel free to appreciate

Leave a Comment