找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4157|回復(fù): 3
打印 上一主題 下一主題
收起左側(cè)

上位機聯(lián)合調(diào)試-串口控制LED燈

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:762492 發(fā)表于 2020-6-17 19:11 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式

界面設(shè)計:
<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="串口設(shè)置" 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="關(guān)閉串口" 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="關(guān)燈" 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 (5.67 KB, 下載次數(shù): 144)

51hei.png

聯(lián)合調(diào)試-LED.zip

73.18 KB, 下載次數(shù): 42, 下載積分: 黑幣 -5

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏3 分享淘帖 頂1 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:885725 發(fā)表于 2021-2-23 15:47 | 只看該作者
這是利用單片機做下位機實現(xiàn)的嗎?有硬件圖嗎?
回復(fù)

使用道具 舉報

板凳
ID:885725 發(fā)表于 2021-2-26 11:22 | 只看該作者
試了一下,居然能運行!請問樓主,程序現(xiàn)在控制的是P0口,怎樣修改成控制P1口呢?
回復(fù)

使用道具 舉報

地板
ID:885725 發(fā)表于 2021-3-3 10:00 | 只看該作者
請問以上程序運行后,串口模擬輸入1時顯示的是6,輸入2時顯示亂碼,請見附件顯示圖片。該怎樣解決顯示不正確的這個問題呢?

串口測試輸入1時的顯示.jpg (125.04 KB, 下載次數(shù): 133)

串口測試輸入1時的顯示.jpg

串口測試輸入2時的顯示.jpg (141.67 KB, 下載次數(shù): 137)

串口測試輸入2時的顯示.jpg
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表