智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 1169|回复: 2
打印 上一主题 下一主题

C#串口调试助手!求助,各位进来看看!在这先谢谢了!

[复制链接]

20

主题

82

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
4034
威望
1474
贡献
914
兑换币
825
注册时间
2012-9-8
在线时间
823 小时
毕业学校
河海大学
跳转到指定楼层
1#
发表于 2013-4-6 21:33:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using ZedGraph;
using System.IO;
using System.IO.Ports;
using System.Threading;
using System.Collections;
using System.Timers;
namespace 上位机
{
    public partial class Form1 : Form
    {
      // System.Windows.Forms.Timer t1;
        string jieshou;
        public Form1()
        {
            InitializeComponent();
        }
        private void button2_Click(object sender, EventArgs e)//"打开关闭串口"按钮
        {
            string CommNum = this.CKH.Text;
            int IntBdr = Convert.ToInt32(this.BTL.Text);//将串口号和波特率存起来
            if (!serialPort1.IsOpen)//如果串口是关闭的
            {
                serialPort1.PortName = CommNum;
                serialPort1.BaudRate = IntBdr;//设定串口号和波特率
                try //try:尝试下面的代码,如果错误就跳出来执行catch里面的代码
                {
                    serialPort1.Open();//打开串口
                    serialPort1.DiscardNull = true;
                    
                    button2.Text = "关闭串口";//改变按钮上的字符
                    CKH.Enabled = false;
                    BTL.Enabled = false;//将串口号和波特率空间关闭;
                    t1.Enabled = true;
                }
                catch
                {
                    MessageBox.Show("串口打开失败!\n\n可能是串口已被占用");
                }
            }
            else//打开的
            {
               
                serialPort1.Close();//关闭串口;
                t1.Enabled = false;
                button2.Text = "打开串口";
                CKH.Enabled = true;
                BTL.Enabled = true;//蒋串口号和波特率选择控件打开
            }
        }
        private void button1_Click(object sender, EventArgs e)//发送数据按钮
        {
            if (serialPort1.IsOpen)
            {
                if (DATA.Text != "")//如果数据为空
                {
                    serialPort1.Write(DATA.Text);
                }
                else
                {
                    MessageBox.Show("发送失败");
                }
            }
            else
            {
                MessageBox.Show("发送失败了");
            }
        }
        public void sj(object sender, EventArgs e)
        {
            string x = DateTime.Now.ToString();
            shijian.Text = x;
        }
        public void get(object sender, EventArgs e)
        {
              //  t1.Enabled = false;
                if (serialPort1.BytesToRead != 0)
                {
                    byte[] buffer = new byte[serialPort1.BytesToRead];
                    serialPort1.Read(buffer, 0, buffer.Length);
                    jieshou = Encoding.ASCII.GetString(buffer);
                    string[] fenkai = jieshou.Split(new char[] { ';' });
                    for (int i = 0; i < fenkai.Length; i++)
                    {
                        if (fenkai[i]!=null)
                        textBox1.AppendText((fenkai[i] + ";"));
                    }
                }
               
            
        }
        private void Form1_Load(object sender, EventArgs e)
        {
          //  t1 = new System.Windows.Forms.Timer();
            t1.Interval = 1;
            t1.Tick += new EventHandler(get);
            
            t1.Enabled = false;
            t2.Interval = 500;//选了一个定时器二
            t2.Tick += new EventHandler(sj);//每隔0.5秒去吧时间读回来,并显示出来
            t2.Enabled = true;
        }
        private void button3_Click(object sender, EventArgs e)
        {
            textBox1.Clear();
        }
        private void textBox1_TextChanged(object sender, EventArgs e)
        {
           // textBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right|
           //     System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Top)));
        }     
    }
}
摄像头采集的数据格式是这样的:数据;数据;数据;数据;数据;……
串口显示的数据却是这样的:数据;数据;数据数据;数据;数据;;数据;……
————数据格式和上位机想要要求显示出来的不同,我想要显示的应该和发送的一样;
求大神帮忙,万分感谢。
咱们这些做车的不容易呀!!!!!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

30

主题

1394

帖子

0

精华

跨届大侠

FreeCars电子 武汉飞卡智能车科技有限公司

Rank: 10Rank: 10Rank: 10

积分
8811

在线王奖章活跃会员奖章优秀会员奖章

威望
4590
贡献
2575
兑换币
2739
注册时间
2012-2-27
在线时间
823 小时
2#
发表于 2013-4-6 23:07:04 | 只看该作者
干嘛一次性读完数据呢?为什么不读一次处理一次。没有加协议吗
回复 支持 反对

使用道具 举报

30

主题

1394

帖子

0

精华

跨届大侠

FreeCars电子 武汉飞卡智能车科技有限公司

Rank: 10Rank: 10Rank: 10

积分
8811

在线王奖章活跃会员奖章优秀会员奖章

威望
4590
贡献
2575
兑换币
2739
注册时间
2012-2-27
在线时间
823 小时
3#
发表于 2013-4-6 23:11:48 | 只看该作者
干嘛一次性读完数据呢?为什么不读一次处理一次。没有加协议吗
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-12-29 15:24 , Processed in 0.097246 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表