попытка доступа к элементу управления 'label2' не из того потока, в котором он был создан. Собственно, впытаюсь получить значения с ком порта пишет такую дрянь
//-----
using System.IO.Ports;
using System.IO;
namespace comSobitie
{
public partial class Form1 : Form
{
// Таймер
Timer timer = new Timer();
// Порт
SerialPort port = new SerialPort("COM2", 9600, System.IO.Ports.Parity.None, 8, System.IO.Ports.StopBits.One);
string value = "";
public Form1()
{
InitializeComponent();
// Подписались на приход данных
port.DataReceived += new SerialDataReceivedEventHandler(port_DataReceived);
// Задаем интервал таймеру
timer.Interval = 10000;
// Подписываемся на тики таймера
timer.Tick += new EventHandler(timer1_Tick);
// Стартуем таймер
timer.Start();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void timer1_Tick(object sender, EventArgs e)
{
// Открываем порт
if (port.IsOpen)
{
// Если порт открыт, значит какой-то косяк, девайс не ответил, здесь обрабатываем
// Закрываем
port.Close();
}
// Открываем
port.Open();
// Чето посылаем
port.Write("#10\r");
}
int i = 0;
// Пришли данные
void port_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
System.Threading.Thread.Sleep(100);
// Получаем пришедшие данные
string indata = port.ReadExisting();
// Чето с ними делаем
MessageBox.Show(i++.ToString() + " " + indata); - это работает
label1.Text = indata; - это нет
// Закрываем порт
if (port.IsOpen) port.Close();
}
}