| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 745 人关注过本帖
标题:一个上位机程序(未全部完成)
只看楼主 加入收藏
IZHQT
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2012-8-27
结帖率:63.64%
收藏
 问题点数:0 回复次数:7 
一个上位机程序(未全部完成)
using System;
using System.Collections.Generic;
using
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace _上位机
{
    public partial class Form1 : Form
    {
        string Rdata;
        string channelA, channelB, channelC, channelD;
        public Form1()
        {
            InitializeComponent();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            if (serialPort1.IsOpen)
            {
                serialPort1.Close();
            }
            else
                MessageBox.Show("串口已关闭");
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            comboBox1.Items.Add("COM1");
            comboBox1.Items.Add("COM2");
            comboBox1.Items.Add("COM3");
            comboBox1.Items.Add("COM4");
            comboBox1.Items.Add("COM5");
            comboBox1.Items.Add("COM6");
            comboBox1.Items.Add("COM7");
            comboBox1.Items.Add("COM8");
            comboBox1.Items.Add("COM9");

            comboBox2.Items.Add("4800");
            comboBox2.Items.Add("9600");
            comboBox2.Items.Add("14400");
            comboBox2.Items.Add("19200");
            comboBox2.Items.Add("38400");
            comboBox2.Items.Add("56000");
            comboBox2.Items.Add("115200");
        }
   
        private void button1_Click(object sender, EventArgs e)
        {
            if (!serialPort1.IsOpen)
            {
                serialPort1.PortName = Convert.ToString(comboBox1.SelectedItem);
                serialPort1.BaudRate = Convert.ToInt32(comboBox2.SelectedItem);
                serialPort1.Open();
            }
            else
                MessageBox.Show("串口已开启");

        }

        private void Receive_data(object sender, EventArgs e)
        {
            
            if (Rdata.Contains("[")&&Rdata.Contains("]"))
            {
                string Box=Rdata.Trim('[',']');
                string[] box =Box.Split(new char[]{'-'},StringSplitOptions.RemoveEmptyEntries);

                textBox1.Text = box[0];
                textBox2.Text = box[1];
                textBox3.Text = box[2];
                textBox4.Text = box[3];
            }
        }

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (serialPort1.IsOpen) serialPort1.Close();
        }

        private void serialPort1_DataReceived(object sender, e)
        {
            Rdata = serialPort1.ReadExisting();
            this.Invoke(new EventHandler(Receive_data));
        }
    }
}

在textBox控件理不能显示数据,估计要用到多线程。
搜索更多相关主题的帖子: namespace private public 
2013-04-24 21:44
yhlvht
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:36
帖 子:707
专家分:4405
注 册:2011-9-30
收藏
得分:0 
看代码也差不多是这个样子了,先确认有没有收到数据吧,你可以自己调试下嘛,断点设在serialPort1_DataReceived事件里面,如果进入断点,表示有收到数据,再到Receive_data方法里面看看拆分有没有问题
如果不进入断点,表示没有收到数据,就检查一下为啥没收到数据
2013-04-25 01:09
IZHQT
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2012-8-27
收藏
得分:0 
断点设了,在数组里面也看到了收到的字符串,但在textbox控件上的显示好像有点问题
2013-04-25 10:45
yhlvht
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:36
帖 子:707
专家分:4405
注 册:2011-9-30
收藏
得分:0 
那你不用this.Invoke(new EventHandler(Receive_data));
直接把Receive_data方法里面的代码写到serialPort1_DataReceived事件里面试试
2013-04-25 16:40
IZHQT
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2012-8-27
收藏
得分:0 
回复 4楼 yhlvht
发现了,原来不是上位机程序的问题,是单片机端发送的问题:
sprintf(arry, "-%d-%d-%d-%d",channelA,channelB,channelC,channelD);
uart_sendN(UART0,(uint8 *)arry,strlen(arry));
但这个该怎么解决呢?
2013-04-25 22:10
IZHQT
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2012-8-27
收藏
得分:0 
还有不应该用这个函数:serialPort1.ReadExisting()
应该用serialPortl.Read()或其他之类的函数。
2013-04-25 22:12
HHubery
Rank: 2
等 级:论坛游民
帖 子:9
专家分:11
注 册:2013-4-25
收藏
得分:0 
2013-04-25 22:30
IZHQT
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2012-8-27
收藏
得分:0 
终于完成了
图片附件: 游客没有浏览图片的权限,请 登录注册

但感觉还差点,想加个类似汽车速度类似的反馈和舵机的反馈,但不知道这类控件怎么手动做?
希望路过的人能给点建议和指导
2013-04-25 23:33
快速回复:一个上位机程序(未全部完成)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018186 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved