Я пытаюсь установить связь с промышленным весовым мостом, используя последовательный порт. Я знаю, как писать код (C#). Проблема в том, что когда я соединяю мост с индикатором, отображается вес. Однако, когда я соединяю мост с моим ПК и запускаю программу, все, что возвращается, это «\ 0» (NULL). Когда я подключаю свой компьютер к индикатору и запускаю программу, я получаю непрерывный «\ 0». Я использую индикатор xk3190-a9. вот пример программыВозврат последовательного порта « 0»
namespace SerialPort
{
class Program
{
private static string dev = "";
static void Main(string[] args)
{
System.IO.Ports.SerialPort mySerialPort = new System.IO.Ports.SerialPort("COM15")
{
BaudRate = 2400,
Parity = Parity.None,
StopBits = StopBits.Two,
DataBits = 8,
RtsEnable = true,
};
mySerialPort.DataReceived += DataReceivedHandler;
mySerialPort.Open();
Console.WriteLine("Press any key to continue...");
Console.ReadKey();
mySerialPort.Close();
}
private static void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e)
{
System.IO.Ports.SerialPort sp = (System.IO.Ports.SerialPort) sender;
dev += sp.ReadExisting();
Console.WriteLine(dev);
}
}
}
Мой вопрос заключается, нужен ли мост «специальные» команды для отправки обратно вес или что я могу сделать, чтобы получить вес. Любые другие данные из порта будут достигнуты. Кроме того, я пробовал разные настройки порта, все же результат.
Вы не должны задавать этот вопрос на SO, так как большинство здесь не знают, какой весовой мост или индикатор. Вы должны запросить эту информацию (обычно это своего рода руководство по эксплуатации) от поддержки/производителя устройства. Это может быть проблема с аппаратным обеспечением (неправильный кабель), неправильная конфигурация связи (например, баланс может быть сконфигурирован отдельно, чтобы принимать широкий диапазон бодрет/паритетов/и т. Д., Вы должны ** знать **, как он в настоящее время настроен или перенастроить его, как вы необходимо) или просто неправильно использовать протокол связи (команды и т. д.). – Sinatr
Наряду с комментариями @Sinatr. В большинстве случаев ваша проблема заключается в том, что для последовательного протокола не применяется последовательный протокол. // Еще одна проблема, с которой вы можете столкнуться, заключается в том, что реализация Microsoft 'SerialPort' довольно затруднительна, особенно событие DataReceived. // Привязывание обоих этих ответов вместе, общий подход последовательного порта - это «SerialPort.SendBytes», затем «SerialPort.ReceiveBytes». Байты, которые вы отправляете и ожидаете получить, основаны на протоколе связи. – KDecker
@KDecker Я пробовал подход к байтам, за исключением ошибочной реализации Microsoft, какой другой lib вы порекомендовали бы. Sinatr Руководство - китайский, и после перевода он рассказывает о программном обеспечении, поставляемом вместе с мостом, для которого требуется Windows Xp: P, который находится на китайском языке и только весит ... Я хотел бы сделать больше, чем взвешивать, иначе я бы использовал индикатор ... –