Ich arbeite an einer kleinen Winform-Anwendung, die Eingabe von einem Barcode-Scanner auf einem virtuellen COM-Port liest und schreibt die Daten zurück in ein Textfeld auf meiner Winform. Ich bin neu in C#, also habe ich mich durchgeschlagen. Mein aktueller Code ist unten und angepasst von hereBarcode-Scanner nur ein Zeichen lesen
namespace Barcode_Scanner
{
public partial class Form1 : Form
{
SerialPort sp;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
string[] ports = SerialPort.GetPortNames();
comboBox1.DataSource = ports;
Application.DoEvents();
}
private void btn_getComData_Click(object sender, EventArgs e)
{
try
{
if (!sp.IsOpen)
sp.Open();
sp.DataReceived += new SerialDataReceivedEventHandler(sp_DataReceived);
}
catch (Exception ex)
{
MessageBox.Show("There was a problem with the Serial Port: " + ex.Message, "Error!");
}
}
void sp_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
sp = (SerialPort)sender;
string data = sp.ReadExisting();
txt_comData.Text = data;
Application.DoEvents();
}
private void button1_Click(object sender, EventArgs e)
{
// Makes sure serial port is open before trying to write
string portname = comboBox1.SelectedItem.ToString();
sp = new SerialPort(portname, 9600, Parity.None, 8, StopBits.One);
sp.Handshake = Handshake.None;
sp.Open();
}
private void button2_Click(object sender, EventArgs e)
{
sp.Close();
}
}
}
Der vollständige String Ich versuche, „3894038“ zu scannen ist, aber ich bin nur in der Lage, die Textbox zu bekommen um ein Zeichen zu einem Zeitpunkt, in dem Textfeld angezeigt werden soll. Ich vermute, dass es etwas mit meinem .ReadExisting-Befehl zu tun hat, aber ich bin etwas perplex darüber, wie es weitergehen soll. Stimmt etwas mit meinem Code nicht?
Vielen Dank für die Hilfe im Voraus.
Marshall
Der Code, den Sie nicht geschrieben nicht mit den Daten alles tun, einmal gelesen. Es fällt mir schwer zu glauben, dass Sie mit Ihrem aktuellen Code nur ein Zeichen in einer Textbox sehen. –
Sorry @JasonWatkins Ich hatte ein Stück meines Codes weggelassen, das ich kürzlich hinzugefügt habe. Ich habe versucht, die Ausgabedaten direkt in ein Textfeld in sp_DataReceived zu schreiben. Ich habe den Code aktualisiert, um die Auslassung zu beheben. – MarshallTrufant