Подключение к COM - порту - C#
Формулировка задачи:
Добрый день, делаю подключение платы к программе на c#, общение должно происходить по RS-485, по протоколу WAKE.
Плата работает правильно(проверял через программу WakeUp!, все команды понимает все нормально), авторы протокола WAKE дали в открытый доступ dll для работы с платой по их протоколу но она написана на С++, я делаю вот такой импорт функций из dll в с++ это выглядит вот так
собственно
bool AccessCOM(char *P) - функция проверяет доступность порта. В качестве параметра передается имя порта (например, "COM1"). Возвращает true в случае доступности порта.
bool OpenCOM(char *P, DWORD baud) - функция открывает порт. В качестве параметров передаются имя порта (например, "COM1") и скорость в бодах, которая может принимать одно из стандартных значений (например, 115200). Возвращает true в случае успешного выполнения. Функция устанавливает на линии DTR уровень -12В, а на линии RTS уровень +12В.
Пытаюсь проверить порт на доступность функцией AccessCOM и она возвращает True, то есть с портом все нормально и можно подключаться, но когда я выполняю функцию OpenCOM то мне возвращается False, помогите, не могу понять что делаю не так
[DllImport("wsp32.dll", CallingConvention = CallingConvention.Cdecl)]
public static extern bool AccessCOM(char[] P);
[DllImport("wsp32.dll", CallingConvention = CallingConvention.Cdecl)]
public static extern bool OpenCOM(char[] P, int baud);bool AccessCOM(char *P) bool OpenCOM(char *P, DWORD baud)
char[] nameCom = new char[4] { 'C', 'O', 'M', '1' };
bool chek = AccessCOM(nameCom);
MessageBox.Show(chek.ToString());
chek = OpenCOM(nameCom, 57600);
MessageBox.Show(chek.ToString());Решение задачи: «Подключение к COM - порту»
textual
Листинг программы
using System;
using System.Collections.Generic;
using System.IO.Ports;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace WpfApplication4
{
/// <summary>
/// Логика взаимодействия для MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
SerialPort _serialPort;
private void button_Click(object sender, RoutedEventArgs e)
{
_serialPort = new SerialPort("COM1",
57600,
Parity.None,
8,
StopBits.One);
_serialPort.Handshake = Handshake.None;
_serialPort.DtrEnable = true;
_serialPort.DataReceived += _serialPort_DataReceived;
_serialPort.Open();
byte[] send = new byte[] { 0xC0, 0xD0,0x14};
_serialPort.Write(send, 0, send.Length);
}
private void _serialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
MessageBox.Show("");
}
}
}