nlothik (nlothik) wrote,
nlothik
nlothik

Categories:

О кросс-платформенном программировании

Вот на чём проще написать программу, которую можно использовать как на Хрюниксах, так и на Винде или на Маке -- на Си или на Джаве? Обычно я не задумываясь отвечаю "на Джаве!" Да? А вот фигачечная!!!

Всё зависит от того, что программе нужно делать. Если вывалить какое-то графическое окно и красиво считать там циферки -- да, можно на Джаве. И работать будет практицки везде.

А вот если надо работать с железом -- то частенько на Джаве без войны -- никак. Простой пример. Пишу небольшую программу, которая будет общаться с железкой через COM-порт. На Джаве для этого есть несколько библиотек. Оригинальная -- JavaComm. Не обновлялась с Джавы 1.2. Не входит в комплект стандартной поставки Джавы. Клон JavaComm -- RxTx. Проект ушёл в оффлайн. jSSC -- вроде живая... Для каждой из них нужно доставлять библиотеки и долго шаманить. Общее ощущение корявости и отсутствие человеческой документации полностью меня удручили.

Знаете, у кого есть хорошие и прекрасно документированные библиотеки для работы с серийными портами? ВНЕЗАПНО, у Майкрософт.

Там есть класс SerialPort с блекджеком и шлюхами: http://msdn.microsoft.com/en-us/library/system.io.ports.serialport%28v=vs.110%29.aspx

Красота же, блин! Но программа, написанная на C#, не запустится под Линуксом.

А что Си? А на Си писать под серийный порт можно, используя termios.h. И этот файл есть практически на всех итерациях хрюниксов -- на Линупсе, на FreeBSD, и даже на MacOS, и, более того, на cygwin под Виндой! Так что пусть бинарник и не запустится -- плевать я на это хотел, перекомпилировать, что, долго, что ли? Везде же есть животворящий gcc.

Только вот рисовать, используя termios.h, скажем так, непросто. Там надо коряги кода с битовыми операциями и флагами. Но есть добрый человек Теуниз ван Беелен (не знаю, правильно ли пишу его имя), который нарисовал свою библиотеку RS232, где работа с серийным портом была сильно упрощена:

http://www.teuniz.net/RS-232

Там нет работы с прерываниями (используется поллинг) и прочего, но для моих целей -- вполне достаточно. Мне сильно сложного не надо -- читать и писать char'ы в порт.
Tags: программирование, рекомендую, фигачечная
Subscribe

  • Не бывает здоровых, бывают недообследованные

    Совсем недавно я узнал, что многочисленные исследования говорят о том, что в 80-90% случаев аутизм передаётся по наследству. Да, безусловно, есть…

  • Про минималку

    Вот лично мне интересно — кто у нас нынче в штате получает минималку, которая у нас определяется федеральным законом, так как законов штата о…

  • Не поддерживаю

    Несогласен я с политикой президента Трампа. Он запретил т.н. “использование федеральных средств” для смены пола лиц, не достигших 19…

  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 10 comments

  • Не бывает здоровых, бывают недообследованные

    Совсем недавно я узнал, что многочисленные исследования говорят о том, что в 80-90% случаев аутизм передаётся по наследству. Да, безусловно, есть…

  • Про минималку

    Вот лично мне интересно — кто у нас нынче в штате получает минималку, которая у нас определяется федеральным законом, так как законов штата о…

  • Не поддерживаю

    Несогласен я с политикой президента Трампа. Он запретил т.н. “использование федеральных средств” для смены пола лиц, не достигших 19…