Ich erstelle eine Windows Form-Anwendung, wo es sich über Bluetooth mit einem Gerät verbindet. Ich kann Befehle an das Gerät senden und erhalte die Daten kontinuierlich. Das Problem, mit dem ich konfrontiert bin, ist, dass ich die fortlaufenden Daten nicht in der Textbox anzeigen kann. Das Textfeld zeigt nur die erste Zeile der Zeichen an, die die Anwendung empfängt. Hier ist mein Code:Empfangen von fortlaufenden Daten mit 32 Feet in .Net (BLUETOOTH)
CONNECT-Taste Aktion:
private void btnConnect_Click(object sender, EventArgs e)
{
if (listBox.SelectedItem != null)
{
lblProgress.Text = "";
btnStart.Enabled = true;
cBoxAvailablePorts.Enabled = cBoxAvailableBaudRates.Enabled = true;
try
{
int pos = listBox.SelectedIndex;
deviceInfo = array.ElementAt(pos);
if (pairDevice())
{
Thread thread = new Thread(() => connectThread());
thread.Start();
}
else
{
MessageBox.Show("Pair failed!");
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
else
{
MessageBox.Show("Please connect to a device!");
}
}
THREAD ACTION
private void connectThread()
{
//BluetoothClient client = new BluetoothClient();
bc.BeginConnect(deviceInfo.DeviceAddress, serviceClass, this.connectCallBack, bc);
}
RUECKRUF ACTION:
private void connectCallBack(IAsyncResult result)
{
//BluetoothClient client = (BluetoothClient)result.AsyncState;
try
{
if (bc.Connected)
{
MessageBox.Show("Connected!");
}
else
{
MessageBox.Show("Connection Failed!");
}
}
catch (Exception)
{
MessageBox.Show("Not able to identify Bluetooth devices! Please try again.!");
}
}
STARTKNOPF- ACTION: Hier schicke ich einen Befehl " S ". In Button Aktion rufe ich sendMessage ("S"). Die Funktion, die unten gezeigt aufgerufen:
public void sendMessage(string msg)
{
try
{
if (bc.Connected)
{
Stream stream = bc.GetStream();
stream.ReadTimeout = 1000;
StreamWriter streamWriter = new StreamWriter(stream);
streamWriter.WriteLine(msg);
streamWriter.Flush();
// Read operation
StreamReader streamReader = new StreamReader(stream);
string result = streamReader.ReadLine();
txtResult.Text = result;
}
else
{
MessageBox.Show("Sending failed!");
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
Ich schrieb den Stream Teil in einer Schleife, und es gab mir Sockel Ausnahme. Ich habe auch versucht, die Daten von Serial Port und DataReceived Ereignis für den Fall zu bekommen, aber immer noch nicht geholfen. Jede Hilfe wäre willkommen. Vielen Dank!