Stap 14: Definitieve gedachten en bron downloaden
De gehele code achter moet als volgt uitzien:
met behulp van systeem; met behulp van System.Collections.Generic; met behulp van System.ComponentModel; using System.Data; met behulp van System.Drawing; met behulp van System.Linq; met behulp van System.Text; met behulp van System.Threading.Tasks; met behulp van System.Windows.Forms; met behulp van System.IO.Ports; naamruimte MotorController {openbare gedeeltelijke klasse MotorRemote: formulier {//create seriële poort singleton SerialPort seriële; //decalre een nieuwe klasse die onze combo box openbare klasse poort zal bevolken {openbare string naam {get; set;} openbare int waarde {get; set;} openbare poort (string n, int ik) {naam = n; Waarde = i; }} openbare MotorRemote() {InitializeComponent()}; private void OnWindowLoad (object afzender, EventArgs e) {//populate keuzelijst met invoervak met de seriële poorten op voorraadAls (avalablePorts.Length > 0) {//create een lijst van objecten te vullen van de keuzelijst met invoervak met lijst < poort > portsList = nieuwe lijst < poort > (); voor (int i = 0; ik < avalablePorts.Length; i ++) {portsList.Add (nieuwe haven (avalablePorts [i], ik));}} ongeldig UpdateMotors() {//message grootte constent const byte messageType = 2; //read de schuifregelaars //motor 1 byte motorOneSpeed = (byte)tbMotorOne.Value; //motor 2 byte motorTwoSpeed = (byte)tbMotorTwo.Value; //create en vul een matrix van bytes als onze bericht byte [] serialMessage = {messageType, motorOneSpeed, motorTwoSpeed}; //send bericht serieel. Schrijven (serialMessage, 0, serialMessage.Length); } private void SliderOneChange (object afzender, EventArgs e) {UpdateMotors();} private void SliderTwoChange (object afzender, EventArgs e) {UpdateMotors();}
Bericht: De OnClose()-gebeurtenis is niet vereist op alle computers. Het voorkomt echter dat de toepassing een zwevende COM-poort te verlaten wanneer de gebruiker het venster sluit. Zonder het is het mogelijk zul je voor herstarten uw computer weer toegang verkrijgen tot die poort. Als u wilt toevoegen de gebeurtenis OnClose maken een gebeurtenis-handler uit het hoofdformulier zoals je deed voor de OnWindowLoad-gebeurtenis deze keer met behulp van de FormClosed gebeurtenis in plaats van de gebeurtenis Load. Binnen de handler toevoegen seriële. Close(); elke open seriële verbinding te sluiten.
Als u per ongeluk extra maakt gebeurtenis-handlers die u niet omhoog gebruikend beëindigen Maak je geen zorgen te veel. Ze heeft geen invloed op de functie van de toepassing en kunnen worden verwijderd door te klikken op het bijbehorende besturingselement en de gebeurtenis-handler te verwijderen uit het menu van lightning bolt.
Download voor WinForms Project: https://goo.gl/rop4zl