找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3289|回复: 3
收起左侧

上位机联合调试-串口控制LED灯

[复制链接]
ID:762492 发表于 2020-6-17 19:11 | 显示全部楼层 |阅读模式

界面

界面

界面设计:
<Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="1*"/>
            <RowDefinition Height="1*"/>
            <RowDefinition Height="1*"/>
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="1*"/>
            <ColumnDefinition Width="1*"/>
        </Grid.ColumnDefinitions>
        <GroupBox x:Name="groupBox" Header="串口设置" FontSize="18" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="23,33,0,0" Height="261" Grid.RowSpan="3" Width="241" />
        <Label Content="串口" FontSize="18" VerticalAlignment="Center" Width="100" HorizontalAlignment="Center" HorizontalContentAlignment="Right" Margin="23,0.5,137,71" Grid.Row="1" Height="36"/>
        <Label Content="波特率" FontSize="18" VerticalAlignment="Center" HorizontalAlignment="Center" Width="100" Grid.Row="1" HorizontalContentAlignment="Right" Margin="23,55,135,10" Height="42"></Label>
        <ComboBox x:Name="cmbChuanKou" Width="100" Height="30" Margin="148,6,10,71" Grid.Row="1"/>
        <ComboBox x:Name="cmbBaud" Width="100" Height="30" Margin="148,55,10,22" Grid.Row="1"/>
        <Button x:Name="btnOpenSerialPort" FontSize="18" Grid.Row="2" Height="30" Width="100" Content="打开串口" Margin="36,27,122,49" Click="btnOpenSerialPort_Click"></Button>
        <Button x:Name="btnCloseSerialPort" FontSize="18" Grid.Row="2" Height="30" Width="100" Content="关闭串口" Margin="148,27,10,49" Click="btnCloseSerialPort_Click"></Button>
        <GroupBox x:Name="groupBox1" Header="控制LED" FontSize="18" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="9.5,33,0,0" Height="261" Grid.RowSpan="3" Width="255" Grid.Column="1" />
        <Label Content="请选择LED" FontSize="18" VerticalAlignment="Center" HorizontalAlignment="Center" RenderTransformOrigin="0.603,0.654" Grid.Column="1" Margin="10,38,142,22" Grid.Row="1" Height="47" Width="107"></Label>
        <ComboBox x:Name="cmbLed" Grid.Column="1" Height="30" Width="100"  Margin="149,38,10,39" Grid.Row="1" ></ComboBox>
        <Button x:Name="btnOpenLed" FontSize="18" Grid.Row="2" Height="30" Width="100" Content="开灯" Grid.Column="1" Margin="17,27,142,49" Click="btnOpenLed_Click"></Button>
        <Button x:Name="btnCloseLed" FontSize="18" Grid.Row="2" Height="30" Width="100" Content="关灯" Grid.Column="1" Margin="149,27,10,49" Click="btnCloseLed_Click"></Button>
    </Grid>
</Window>
后台代码:
  private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            foreach (string s in SerialPort.GetPortNames())
            {
                cmbChuanKou.Items.Add(s);
            }
            List<string> Baud = new List<string>(new string[] { "600", "1200", "2400", "4800", "9600", "14400", "19200", "115200" });
            cmbBaud.ItemsSource = Baud;
            cmbLed.Items.Add("全部");
            for (int i = 1; i < 17; i++)
            {
                cmbLed.Items.Add(string.Format("{0}号灯", i));
            }
            cmbChuanKou.SelectedIndex = 0;
            cmbLed.SelectedIndex = 0;
            cmbBaud.SelectedIndex = 0;

        }
  private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
        {


        }


        private void btnOpenSerialPort_Click(object sender, RoutedEventArgs e)
        {
            mySerialPort.PortName = cmbChuanKou.Text;
            mySerialPort.BaudRate = Convert.ToInt32(cmbBaud.Text);
            try
            {
                mySerialPort.Open();
                btnOpenSerialPort.IsEnabled = false;
                btnCloseSerialPort.IsEnabled = true;
                cmbChuanKou.IsEnabled = false;
                cmbBaud.IsEnabled = false;
            }
            catch
            {
                MessageBox.Show("打开端口出错,请检查串口", "错误");
            }
        }


        private void btnCloseSerialPort_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                mySerialPort.Close();
                btnOpenSerialPort.IsEnabled = false;
                btnCloseSerialPort.IsEnabled = true;
                cmbChuanKou.IsEnabled = true;
                cmbBaud.IsEnabled = true;
            }
            catch
            {
            }
        }
        private byte sum(byte[] d)
        {
            byte s = 0;
            for (int i = 0; i < d.Length - 1; i++)
            {
                s += d[ i];[ i]
            }
            return s;
        }


        private void btnOpenLed_Click(object sender, RoutedEventArgs e)
        {
            byte[] data = new byte[5];
            data[0] = 0x55;
            data[1] = 0xaa;
            data[2] = (byte)cmbLed.SelectedIndex;
            data[3] = 0x00;
            data[4] = sum(data);
            mySerialPort.Write(data, 0, 5);
        }


        private void btnCloseLed_Click(object sender, RoutedEventArgs e)
        {
            byte[] data = new byte[5];
            data[0] = 0x55;
            data[1] = 0xaa;
            data[2] = (byte)cmbLed.SelectedIndex;
            data[3] = 0xFF;
            data[4] = sum(data);
            mySerialPort.Write(data, 0, 5);
        }
    }

}


51hei.png

联合调试-LED.zip

73.18 KB, 下载次数: 42, 下载积分: 黑币 -5

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:885725 发表于 2021-2-23 15:47 | 显示全部楼层
这是利用单片机做下位机实现的吗?有硬件图吗?
回复

使用道具 举报

ID:885725 发表于 2021-2-26 11:22 | 显示全部楼层
试了一下,居然能运行!请问楼主,程序现在控制的是P0口,怎样修改成控制P1口呢?
回复

使用道具 举报

ID:885725 发表于 2021-3-3 10:00 | 显示全部楼层
请问以上程序运行后,串口模拟输入1时显示的是6,输入2时显示乱码,请见附件显示图片。该怎样解决显示不正确的这个问题呢?
串口测试输入1时的显示.jpg
串口测试输入2时的显示.jpg
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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