Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Modbus для windows

Павел Сенокосов Ученик (95), на голосовании 2 месяца назад
Кто нибудь знает - работает ли libmodbus на windows или нет?
Если да, то как запустить?
Если нет, то есть ли какая нибудь другая библиотека modbus для windows?
Голосование за лучший ответ
бабуин гибонович Оракул (50154) 3 месяца назад
Да, `libmodbus` может работать на Windows, но с некоторыми ограничениями и требуются дополнительные усилия для сборки и использования. `libmodbus` изначально разработана для UNIX-подобных систем (Linux), поэтому для работы на Windows нужно настроить среду и собрать библиотеку самостоятельно.

### Как запустить `libmodbus` на Windows:
1. **Установка MinGW**: Для компиляции `libmodbus` на Windows рекомендуется использовать MinGW (Minimalist GNU for Windows), который предоставляет необходимые инструменты для сборки.

2. **Скачивание исходного кода**: Скачайте исходный код `libmodbus` с официального репозитория GitHub.

3. **Сборка**:
- Настройте окружение MinGW.
- Запустите `configure` скрипт для генерации Makefile.
- Используйте команду `make` для сборки библиотеки.

4. **Использование**: После успешной сборки, можно будет использовать библиотеку в своем проекте на C/C++.

### Альтернативные библиотеки Modbus для Windows:
Если `libmodbus` не удается запустить или требуется что-то более нативное для Windows, можно рассмотреть следующие библиотеки:

1. **SimpleModbus**:
- Простая и легкая в использовании библиотека, поддерживающая Modbus RTU и TCP.
- Есть примеры для использования на Windows.

2. **ModbusMaster (Arduino)**:
- Хотя предназначена для Arduino, может быть портирована для работы на Windows, особенно если используется с COM-портами.

3. **WinModbus**:
- Прямо разработана для Windows и поддерживает Modbus TCP и RTU.

4. **NModbus**:
- Это .NET-библиотека для работы с Modbus на Windows, если вы работаете на C# или других .NET языках.

Для простой реализации лучше использовать библиотеку, которая уже поддерживается на Windows, так как это избавит вас от необходимости настройки и сборки.
Бодрый Гуру (3323) 3 месяца назад
Не проще самому разобраться в соединении с COM Ports?
Какие такие задачи должна решать эта библиотека?
Пробовал, не понравилась. Проще свое написать, то что требуется для своих нужд.
Павел СенокосовУченик (95) 3 месяца назад
Там надо crc считать, и разные ошибки надо учитывать. Я думал, что готовое решение будет немного проще, чем влезать в дебри и изобретать своë с нуля
Бодрый Гуру (3323) Павел Сенокосов, Жираф большой... Честно слова, порой разобраться в чужой библиотеке сложнее, чем написать свое. Вон, ты уже ее запустить не можешь. А дальше, не исключено что она вообще не будет делать - то что ты хочешь. CRC - решается подключением boost. Считай "Родная библиотека", подключил через СМаке и все. В любом случае, решение за тоюой.
БодрыйГуру (3323) 3 месяца назад
 #ifndef PRIVATE_BUFFER_SIZE 
#define PRIVATE_BUFFER_SIZE 1024
#endif

std::streamsize const buffer_size = PRIVATE_BUFFER_SIZE;

int main(int argc, char *argv[])
{

std::string fileName[3]{"hello.txt", "hello1.txt", "COM.txt"};
for (int i = 0; i < 3; i++)
{
boost::crc_32_type result;
std::ifstream ifs(fileName[i], std::ios_base::binary);
if (ifs)
{
do
{
char buffer[buffer_size];

ifs.read(buffer, buffer_size);
result.process_bytes(buffer, ifs.gcount());
} while (ifs);
}
БодрыйГуру (3323) 3 месяца назад
         else 
{
std::cerr << "Failed to open file " << std::endl;
}
std::cout << std::hex << result.checksum() << std::endl;
}
return 0;
}
Это я какого то черта считал, сейчас уже не помню. Но суть- такая...
Похожие вопросы