На одном обслуживаемом объекте промышленный компьютер выполняющий важные круглосуточные задачи по непонятным причинам периодически повисает стабильно раз в неделю. Длительное исследование проблемы результатов не дало, и сложилось стойкое убеждение что причина - дефект одного из компонентов материнской платы, т.е. чисто железная проблема. Было предложено задействовать встроенный в мать watchdog таймер, реализованный на чипе winbond w83627 представляющий Super I/O контроллер. Но одно дело выдвинуть идею, другое - ее воплотить. Этим и займемся...
Вычислительная машина ценна ровно настолько, насколько ценен использующий её человек. Но он обязан иметь идеи. Норберт Винер. "Кибернетика, или Управление и связь в животном и машине".
Показаны сообщения с ярлыком Си. Показать все сообщения
Показаны сообщения с ярлыком Си. Показать все сообщения
пятница, 18 декабря 2015 г.
среда, 3 сентября 2014 г.
InputBox в C#
C# предлагает разработчику удобный класс MessageBox в пространстве имён System.Windows.Forms. Однако ориентирован он исключительно на диалоговые окна вывода различного рода сообщений. Диалоговых окон ввода данных (InputBox) не предусмотрено. Странная асимметрия. А ведь получать данные от пользователя приходится почти в каждом проекте! Конечно, можно создать собственный класс диалогового окна и реализовать весь необходимый функционал. Но гораздо быстрее и проще в условиях ограниченности времени использовать InputBox из сборки Microsoft.VisualBasic.dll. Подключив сборку к проекту, можно написать в тексте программы
var s = Interaction.InputBox("Text", "Caption", "Value", posX, posY);
Первые три параметра имеют формат строки. Последние два в формате целого числа управляют расположением окошка на экране монитора. Это очень важные параметры, так как InputBox не предлагает никаких средств для привязки его к родительскому окну. Поэтому, чтобы окошко не появлялось на экране где попало используется его позиционирование. Значение введённое пользователем возвращается функцией InputBox в виде строки.
пятница, 27 июня 2014 г.
Работа с zip в C#
Работая в рамках NET Framework 3.5 не нашел понятных и простых в использовании встроенных средств для создания zip архивов. В версии 4.5 такой проблемы нет. Сборка System.IO.Compression содержит класс ZipFile удовлетворяющий меня вполне. Однако в низших версиях указанная сборка содержит только два класса GZipStream и DeflateStream. Есть конечно еще и сборка System.IO.Packaging, но формат генерируемого ею файла zip несколько отличается от стандартного и заточен скорее под XML. Таким образом, встроенных средств работы со стандартными zip файлами в dotNET 3.5 попросту нет. Осознав этот печальный факт я скрипя сердце стал искать сторонние средства. Таких нашлось немало, но я упомяну лишь два из них.
пятница, 16 мая 2014 г.
Вызов внешней программы из приложения C#
В практике программирования бывает возникает необходимость вызова из приложения некоторой внешней программы возможно с передачей ей списка аргументов. В C# эта задача решается средствами System.Diagnostics.Process. Приведу небольшой пример, показывающий имеющиеся в распоряжении программиста возможности.
среда, 1 августа 2012 г.
Случайные числа в VC++
Часто
в задачах определенного типа требуется строить последовательности чисел
лежащие в заданных границах и удовлетворяющие условиям равномерного
распределения. Перед практической частью изложения материала неплохо бы
освежить в памяти теоретические аспекты случайных чисел. Для этого
вполне достаточным на мой взгляд будет переход по ссылке Генераторы случайных чисел...
Запуск проводника в VC#
Чтобы
запустить из программы на C# проводник Windows нам понадобиться
пространство имен System.Diagnostics и класс Process. Данный класс
предлагает метод Start() который и организует вызов внешней программы.
Для этого разместим на форме проекта C# WinForms объект Button,
определим его имя как btnExplorer и зададим содержание функции Click()
обрабатывающей нажатие кнопки:
using System.Diagnostics; private void btnExplorer_Click(object sender, EventArgs e) { Process.Start("explorer"); }
В
результате, после клика на кнопке экран монитора отобразит проводник
Windows в заданном по умолчанию виде, соответствующем запуску проводника
через кнопку Пуск->Выполнить. Но не всегда этот вид
удовлетворителен. Усложним задачу, требуя, чтобы проводник отображал не
папку "Мои документы", а некоторую наперед заданную...
Подписаться на:
Сообщения (Atom)