Stap 10: Update - sommige Visual Studio C#-voorbeeldcode
Ik heb geïnstalleerd en frustrerend geleerd om te gebruiken Visual C#.
Hier is de code die doet wat de ahk demo programma's.
Ik heb net het een codefragment hieronder, zie zip-bestand onderaan voor volledige projecten.
>>> begint op de volgende regel <<<---
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.Windows.Forms;
met behulp van System.IO.Ports;
met behulp van System.Media;
naamruimte SerialIO
{
openbare gedeeltelijke klasse SerialIOform: formulier
{
string [] PortNames = {};
int BaudRateDefault = 9600;
Pariteit ParityDefault = Parity.None;
int DataBitsDefault = 8;
StopBits StopBitsDefault = StopBits.One;
Handdruk HandshakeDefault = Handshake.None;
BOOL RTSdefault = false;
BOOL DTRdefault = false;
Const tekenreeks MessagePortError = "Fout bij openen van de poort";
Een nieuw SerialPort-object maken met standaardinstellingen.
SerialPort IOport = nieuwe SerialPort();
Maken van de timer om de te dingen wanneer gestart
Timer DoItNow = nieuwe timer ();
openbare SerialIOform()
{
InitializeComponent();
Poort standaardwaarden instellen en controleren of poorten bestaan
SerialIOPortSetup();
Setup timer
DoItNow.Interval = 500; Twee keer per seconde
DoItNow.Tick += new EventHandler(DoItNow_Tick);
}
Setup Defaults & Dropdown
private void SerialIOPortSetup()
{
PortNames = SerialPort.GetPortNames();
Als (PortNames.Length! = 0)
{
Standaardwaarden instellen
IOport.PortName = PortNames [0];
IOport.BaudRate = BaudRateDefault;
IOport.Parity = ParityDefault;
IOport.DataBits = DataBitsDefault;
IOport.StopBits = StopBitsDefault;
IOport.Handshake = HandshakeDefault;
IOport.RtsEnable = RTSdefault;
IOport.DtrEnable = DTRdefault;
Vullen van de Dropdown
SerialPortComboBox.Items.Clear();
SerialPortComboBox.Items.AddRange(PortNames);
SerialPortComboBox.SelectedIndex = 0;
MessagesLabel.Text = "";
StartButton.Text = "Start";
}
anders
{
SerialPortComboBox.Items.Clear();
MessagesLabel.Text = "geen poorten gevonden! Connect & Druk op vernieuwen";
StartButton.Text = "Ververs";
}
}
private void SerialIOform_Load (object afzender, EventArgs e)
{
}
private void SerialPortComboBox_SelectedIndexChanged (object afzender, EventArgs e)
{
oude poort sluiten
Als (IOport.IsOpen)
IOport.Close();
ingesteld op de geselecteerde poort
IOport.PortName = SerialPortComboBox.SelectedItem.ToString();
Selectievakje poort geldig
Probeer
{
IOport.Open();
MessagesLabel.Text = ""; duidelijk oude fout msg
}
vangst
{
MessagesLabel.Text = MessagePortError;
}
Dus het is niet open wanneer doend niets, het sluit
Hiermee slaat u probleem als poort unplugged
Als (IOport.IsOpen)
IOport.Close();
}
private void StartButton_Click (object afzender, EventArgs e)
{
Als (StartButton.Text == "Refresh")
{
SerialIOPortSetup();
}
else if (StartButton.Text == 'Stop')
{
Timer stoppen
DoItNow.Stop();
IOport.Close();
StartButton.Text = "Start";
}
anders / / moet "Start"
{
Als (IOport.IsOpen) / / veiligheidsgordel, poort moet zijn gesloten
IOport.Close();
Controleren poort geldig, nodig om het te doen opnieuw als apparaat losgekoppeld zou kunnen zijn
Probeer {}
IOport.Open();
}
Catch {}
MessagesLabel.Text = MessagePortError;
terugkeer;
}
StartButton.Text = "Stop";
Poort geopend, starttimer om dingen te doen
DoItNow.Start();
}
}
VOID DoItNow_Tick (object afzender, EventArgs e)
{
Terwijl verwerking gebeurtenis timer stoppen
DoItNow.Stop();
Set input checkboxes IOport instellingen
DCDcheckBox.Checked = IOport.CDHolding;
DSRcheckBox.Checked = IOport.DsrHolding;
Pieptoon als instellen
Als (DCDbeepCheckBox.Checked & & DCDcheckBox.Checked)
SystemSounds.Asterisk.Play();
Als (DSRbeepCheckBox.Checked & & DSRcheckBox.Checked)
SystemSounds.Beep.Play();
Als blink gecontroleerd in-/ uitschakelen
Als (DTRblinkCheckBox.Checked)
DTRcheckBox.Checked =! DTRcheckBox.Checked;
Als (RTSblinkCheckBox.Checked)
RTScheckBox.Checked =! RTScheckBox.Checked;
Set IOport aan de uitvoerinstellingen
IOport.DtrEnable = DTRcheckBox.Checked;
IOport.RtsEnable = RTScheckBox.Checked;
Start opnieuw op timer
DoItNow.Start();
}
private void CancelButton_Click (object afzender, EventArgs e)
{
Als (IOport.IsOpen)
IOport.Close();
Get rid van IOport??
uitgang
SerialIOform.ActiveForm.Close();
}
private void DCDbeepCheckBox_CheckedChanged (object afzender, EventArgs e)
{
hoef niet om dingen te doen, we testen status elders
}
private void DSRbeepCheckBox_CheckedChanged (object afzender, EventArgs e)
{
hoef niet om dingen te doen, we testen status elders
}
private void DTRblinkCheckBox_CheckedChanged (object afzender, EventArgs e)
{
hoef niet om dingen te doen, we testen status elders
}
private void DTRBlinkCheckBox_CheckedChanged (object afzender, EventArgs e)
Visual Studio kreeg zijn onderbroeken in een knoop toen ik DTRBlink checkbox hernoemd naar DTRblink
en nu vraagt om een DTRBlink versie. ???
{
hoef niet om dingen te doen, we testen status elders
}
private void RTSblinkCheckBox_CheckedChanged (object afzender, EventArgs e)
{
hoef niet om dingen te doen, we testen status elders
}
private void DTRcheckBox_CheckedChanged (object afzender, EventArgs e)
{
niet nodig om dingen te doen, zetten we staat elders
}
private void RTScheckBox_CheckedChanged (object afzender, EventArgs e)
{
niet nodig om dingen te doen, zetten we staat elders
}
//
//
} / / SerialIOForm
} / / SerialIO-naamruimte
>>> laatste regel hierboven <<<---