бабуин гибонович
Оракул
(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)
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;
}
Это я какого то черта считал, сейчас уже не помню. Но суть- такая...
Если да, то как запустить?
Если нет, то есть ли какая нибудь другая библиотека modbus для windows?