Есть вот такой код для автоматического подключение к Com порту. На Com порт подаются 16 битные числа с заголовком, я проверяю, если имеется нужный мне заголовок, то это мой порт. Но что-то не работает.
namespace _645747
{
public partial class MainWindow : Window
{
SerialPort serialPort1 = new SerialPort();
string foundCOM_PORT { set; get; }
public MainWindow()
{
InitializeComponent();
serialPort1.StopBits = StopBits.One;
serialPort1.DataBits = 8;
serialPort1.BaudRate = 19200;
serialPort1.Parity = Parity.None;
}
void SerialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
var port = (SerialPort)sender;
int buferSize = port.BytesToRead;
foreach (string portname in SerialPort.GetPortNames())//цикл, диапазон = все ком порты подключенные к компу
{
try
{
Console.WriteLine("Operation - " + portname + " OPEN");
this.serialPort1.PortName = portname;//берём название порта
this.serialPort1.Open();//открываем его
for (int i = 0; i < buferSize; ++i)
{
// читаем по одному байту
byte bt = (byte)port.ReadByte();
// если встретили начало кадра (0xFF) - начинаем запись в _bufer
if (0x20 == bt)
{
MessageBox.Show("oooooooo");
foundCOM_PORT = portname;//сохраняем порт
}
System.Threading.Thread.Sleep(1000);//останавливаем поток программы
if (foundCOM_PORT != null)//если нашли порт, то выходим из цикла
break;
}
}
catch//если мы не смогли открыть порт(порт занят и мы словили ошибку) цикл continue
{
continue;
}
finally
{
//при любом событии (ошибки или нашли порт) закрыть порт
//далее в основном потоке используя foundCOM_PORT программа зайдёт в порт (иначе порт будет занят и получим ошибку)
this.serialPort1.Close();
}
}
}
}
}
namespace _645747
{
public partial class MainWindow : Window
{
SerialPort serialPort1 = new SerialPort();
string foundCOM_PORT { set; get; }
public static bool F = false;
public MainWindow()
{
InitializeComponent();
serialPort1.StopBits = StopBits.One;
serialPort1.DataBits = 8;
serialPort1.BaudRate = 19200;
serialPort1.Parity = Parity.None;
serialPort1.DataReceived+= SerialPort_DataReceived;
}
private void SerialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
var port = (SerialPort)sender;
int buferSize = port.BytesToRead;
for (int i = 0; i < buferSize; ++i)
{
// читаем по одному байту
byte bt = (byte)port.ReadByte();
// если встретили начало кадра (0xFF) - начинаем запись в _bufer
if (0x20 == bt)
{
F = true;
MessageBox.Show("oooooooo");
}
}
}
private void Buf(object sender, RoutedEventArgs e)
{
foreach (string portname in SerialPort.GetPortNames())//цикл, диапазон = все ком порты подключенные к компу
{
try
{
Console.WriteLine("Operation - " + portname + " OPEN");
this.serialPort1.PortName = portname;//берём название порта
this.serialPort1.Open();//открываем его
System.Threading.Thread.Sleep(1000);//останавливаем поток программы
if (F == true)
{
foundCOM_PORT = portname;//сохраняем порт
}
if (foundCOM_PORT != null)//если нашли порт, то выходим из цикла
break;
}
catch//если мы не смогли открыть порт(порт занят и мы словили ошибку) цикл continue
{
continue;
}
finally
{
//при любом событии (ошибки или нашли порт) закрыть порт
//далее в основном потоке используя foundCOM_PORT программа зайдёт в порт (иначе порт будет занят и получим ошибку)
this.serialPort1.Close();
}
}
}
}
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Как заменить сообщения DataAnnotations по умолчанию
Мне необходимо перезаписать записи из кастомного типа записей в обратном порядкеЯ пробовал добавить такой код в файл functions
Можно ли сделать так, чтобы PHP сформировал содержимое небольшого файла ( к примеру CSV) массивом или просто строкой, но не записывал его на диск...