LINUX.ORG.RU

Сообщения decadent

 

Неттоп в качестве рабочей лошадки

Форум — General

Здравствуй, All.

Мы делаем испытательные стенды, управляемые компьютером. Современный системник занимает кучу места, поэтому возникла сумасшедшая идея — использовать в качестве управляющих компов неттопы. Задача управляющего блока — общаться с контроллером через ком-порт и предоставлять юзеру графический интерфейс — то есть, супернагрузок на комп нет. Реально ли поставить неттоп, на котором будет крутиться прога на Tcl/Tk, для таких целей? Хватит ли его производительности?

PS: О платах mini-ITX знаю, но в нашей деревне их не продают, надо заказывать, что есть проблема.

decadent
()

Кириллица в TkZinc

Форум — Development

Возник вопрос по сабжу. Вот тут пример кода. Латинница видна, кириллица нет. При этом наблюдается интересная штука: если я редактирую файлы с примерами, дописывая туда что-либо на русском, — дописанное отображается. Что я делаю не так?

decadent
()

Kiosk mode в Tcl/Tk

Форум — Development

Доброго времени суток!

Хочу реализовать сабж. Как это правильно сделать? Пока вижу вариант — получить каким-либо образом разрешение монитора (для Х — скорее всего из .Xresources, для винды придется, наверное, искать в реестре)? и дать команду

 
wm geometry .  =widthxheight

Но что-то мне этот подход немного не нравится.Может быть, есть какой-нибудь готовый пакет для реализации сабжа?

decadent
()

Tcl/Tk и threads

Форум — Development

Перерыл wiki.tcl.tk и не нашел ответа на казалось бы такой простой вопрос: как грамотно передавать информацию между тредом, в котором работает Tk GUI, и другим тредом, в котором в моем случае происходит работа с ком-портом. Суть такова: в отдельном потоке (дабы не замораживать интерфейс) я ловлю данные, приходящие на ком-порт. Когда они пришли, мне нужно их распарсить и вывести в главное окно. Можно, конечно, воспользоваться tsv::set — но тогда нужно как-то отслеживать, изменилась ли переменная, и парсить полученные данные в основном треде. Как в этом случае поступают умные люди?

decadent
()

Fileevent в Tcl

Форум — Development

Не могу разобраться с сабжем. Сейчас общаюсь с ком-портом посредством постоянного поллинга. Работает, но остается ощущение «неправильности». Стоит задача сделать нечто вроде конечного автомата: подаю модему команду, и в зависимости от его ответа выполняю разные действия. С помощью fileevent пытаюсь сделать так:

 
set status 0
set serial [open /dev/ttyS0 r+]
fconfigure $serial -mode "9600,n,8,1" -blocking 0 -buffering none -translation binary
fileevent $serial readable [list serial_receiver $serial]

proc serial_receiver { chan } {
	global status
     if { [eof $chan] } {         
         catch {close $chan}
         return
     }
     set data [read $chan]
     set size [string length $data]	 
 }
 
 switch $status {
		0	{
				puts -nonewline $serial "AT\r"
				set status 1
			}
		1	{
				puts -nonewline $serial "ATI\r"
				set status 2
			}
		2	{
				puts -nonewline $serial "AT+CREG?\r"
				set status 3
			}
		3	{
				puts -nonewline $serial "AT+CPIN?\r"
				set status 0
			}		
	 }
 

В порт подается только первая команда — и все. Что я делаю не так?

decadent
()

Tcl+MySQL

Форум — Development

Коллеги, а как правильнее организовать сабжевую связку? Нашел две библиотеки, mysqltcl и tcl-sql, но обе они какие-то древние — у первой последний релиз был в 2008 году, у второй вообще в 1999.

decadent
()

Дата и время в Javascript и MySQL

Форум — Web-development

Доброго времени суток!

Пытаюсь использовать библиотеку Highcharts для рисования графиков зависимости неких величин от времени. Время хранится в таблице MySQL в формате datetime. Забираю данные так:

 
$sql = "SELECT * FROM `monitoringtable` ORDER BY `monitoringtable`.`index` DESC LIMIT 1 ";

$result=mysql_query($sql);

while ($row = mysql_fetch_assoc($result))
{
	$test1 =strtotime($row['dateOfMeasurement']);
	$test2 = $row['F0'];
	echo "[$test1, $test2]";
}

Проверки убраны для читаемости.

На стороне клиента имеется функция на js (jQuery):

 

function requestData() {
	$.ajax({
	  url: 'live-server-data.php', 
	  success: function(point) {
                var series = chart.series[0];
	        shift = series.data.length > 20;
		chart.series[0].addPoint(eval(point), true, shift);
		},
		cache: false,
		ifModified: true
		});
	}

Вроде бы все логично и в примере, приведенном на сайте, все работает. Но — у меня все даты получаются в 1970 году и отличаются секундами, хотя в реале интервал не менее получаса. Подозреваю, что я неправильно преобразовываю дату в php-скрипте. Посоветуйте, пожалуйста, как мне это дело победить.

decadent
()

[C][чайник] Снова преобразование типов

Форум — Development

В продолжение вон того поста .

Читаю с помощью sscanf данные с датчика, расшифровывается правильно все, кроме одного значения. Согласно документации, оно представлено в формате 32-битового числа с плавающей запятой. Делаю так:


float temp;

int scan_result;

scan_result = sscanf(in_buffer, "...%8f...", ...,  &temp, ...);


Однако результат получается совсем не тот, что мне нужен. Например, пришло с датчика число B374C600. Онлайн-перекодировщик говорит, что результат будет -5.6990757e-8, а у меня выходит 4085.0. Что я делаю не так?

 ,

decadent
()

[C][чайник][не понимаю]Преобразование типов

Форум — Development

Доброго времени суток. Прошу помощи, ибо совсем запутался.

Суть такова. Есть строка, получаемая с контроллера. Выглядит примерно так:

 

unsigned char in_buffer[120] = "44415441FFFF000001029000009000009000009000009000900000900000900000900000900090000090000090000090000090000000000000000075";

Задача: каждые два символа этой строки представляют один байт. Нужно ее расчленить на эти самые пары символов, потом получить из них соответствующие байты и вычислить контрольную сумму, которая получается как сумма всех байт, кроме последнего, инвертированная и плюс 1. Делаю так:

 

void isCorrectCRC(unsigned char * in_buffer)
{
// Check the CRC for correctness
    int i;
    unsigned char temp_buffer[2];
    int scan_result = 0;
    unsigned char crc = 0;
    unsigned char temp_crc = 0;

    for (i = 0; i < 59; i++)
    {
        temp_buffer[0] = in_buffer[2 * i];
        temp_buffer[1] = in_buffer[2 * i + 1];
        scan_result = sscanf(temp_buffer, "%2X", &temp_crc);

        crc += temp_crc;

        printf("%d\t%d\n", temp_crc, crc);
    }

    crc = ~crc + 1;

    printf("%d\n", crc);
    printf("done\n");

}

Версия функции, естественно, не окончательная. Но вот беда: результат получается неправильный. Прогон под отладчиком показывает, что внутри цикла переменная crc почему-то обнуляется! Что я делаю не так?

PS: последние два символа — это и есть тот самый байт контрольной суммы, который нужно получить.

 , ,

decadent
()

Посоветуйте виртуальную машину

Форум — General

По долгу службы вынужден работать в винде, но нужно написать программу для линукса. Хочу поставить последний на виртуальную машину. Поскольку никогда с этим дела не имел, прошу совета, какую лучше использовать. Специфическое требование: нужно использовать ком-порт, причем как «железный», так и в виде USB переходника Moxa.

decadent
()

[Хочется странного]оффлайн-версия wiki.tcl.tk

Форум — Development

Есть ли в природе сабж? Ну или — можно ли эту вику каким-то образом скачать для использования на компе, на котором нет доступа к интернету? Собираюсь в командировку в края, где с инетом очень туго, а иногда нужно в вику посматривать.

 

decadent
()

[C][чайник] Асинхронная работа с ком-портом - ЧЯДНТ?

Форум — Development

Хочу асинхронно общаться с модемом. На основе Serial Programming Howto (http://www.faqs.org/docs/Linux-HOWTO/Serial-Programming-HOWTO.html) и некоторого гуглинга набросал программу на plain C: http://pastebin.org/320905 . Компилируется без ошибок, запускаю — и создается ощущение, что попадаю в бесконечный цикл — получаю что-то типа такого:

 
:ATI:3
 = received SIGIO signal.
 = received SIGIO signal.
:ATI:3
 = received SIGIO signal.
 = received SIGIO signal.

И так постоянно. Подозреваю, что я что-то недопонимаю в параметрах termios. Где я неправ?

 ,

decadent
()

[чайник][посоветуйте] много ком-портов

Форум — Development

Ситуация следующая. Есть сервер под убунтой 10.04, у него несколько ком-портов, на каждом висит (или будет висеть в будущем) GSM-модем. Информацию о том, какой модем куда подключен и с какими параметрами, планирую хранить в таблице MySQL. Посоветуйте, пожалуйста, как наиболее оптимально реализовать приложение, которое бы:

1. Работало одновременно со всеми подключенными модемами.

2. При появлении новой записи в таблице модемов создавало новый поток (или еще как-то) для работы с этим новым модемом; при удалении модема из базы, соответственно, все операции с портом должны быть прекращены.

Информация на модемы приходит нечасто — раз в 15 минут или реже, но на несколько модемов могут позвонить одновременно.

Иксы на сервере отсутствуют в принципе, поэтому рулить приложением предполагается из веб-интерфейса, и в веб же выводить результаты, вследствие чего планирую использовать perl, python либо tcl.

 ,

decadent
()

[чайник] Программа на С, интерфейс на Tcl/Tk

Форум — Development

Не бейте сильно, гугль не отвечает.

Как правильно реализовать сабж? Суть такова: нужно написать утилиту для настройки некоей железяки. Утилита периодически (порядка 10 раз в секунду) железяку опрашивает, результат опроса показывает оператору. Кроме того, оператор может изменять некоторые параметры этой железяки. Саму утилиту думаю писать на С, а вот как к ней прикрутить интерфейс? Хочу использовать Tcl/Tk, но нигде не могу найти, как их между собой подружить.

 

decadent
()

тонкости chat

Форум — Development

Постигаю премудрости модемной связи в Linux. Для моей задачи, как мне кажется, достаточно простого chat-скрипта, однако чтение man chat не привело к просветлению, поэтому прошу помощи здесь. Суть вопросов такова.

1. Начальная инициализация модема. Сразу после подключения я в терминале говорю ему AT — он может ответить что угодно, или не ответить вообще, поэтому AT ему нужно говорить несколько раз (или один раз, если он ответил сразу). Строк вида

" AT

OK something

очевидно, недостаточно, потому как я даю одну команду и жду ответа на нее, а ответа может и не быть. Как это автоматизировать?

2. chat должен слушать порт постоянно, так как в произвольный момент времени на него могут позвонить, он должен этот звонок обработать и ждать следующего. Можно ли это реализовать средствами самого chat или нужно его постоянно перезапускать?

Пока это все вопросы, но, вероятно, будут еще. Заранее спасибо.

decadent
()

[Perl] Разбивка длинной строки

Форум — Development

Доброго времени суток!

Имеется длинная строка (240 символов), в которой зашифрованы показания кучи датчиков. Строку эту нужно разбить на подстроки разной (заранее известной) длины, каждую подстроку преобразовать и таким образом получить эти показания. С преобразованием проблем нет, но я подозреваю, что для каждого преобразования отдельно получать свою подстроку довольно накладно. Есть ли возможность сразу разбить исходную строку на подстроки заданной длины, и уже потом каждую обрабатывать по отдельности?

 

decadent
()

[некрофилия][хочется странного] загрузка загрузчика по сети

Форум — General

Уважаемые коллеги!

Имеется древний ноутбук, на котором помер жесткий диск, а биос настолько старый, что загрузку с флешки не поддерживает. Перепрошить его тоже возможности нет, поскольку в ноуте нет дисковода. Но поддерживается загрузка по сети. Я разобрался, как по сети грузить образы систем (в частности, Damn Small Linux грузится и работает неплохо). Однако есть другая идея — хочу получать по сети только загрузчик, а он уже пусть загружает с флешки ОС. Возможно ли такое, при условии что сам ноут с флешки грузится не умеет? Куда копать? Заранее спасибо.

 ,

decadent
()

Ищу книги

Форум — Development

Разыскиваются книги:

1. "Programmer's Technical Reference: Data and Fax Communications" by Robert L. Hummel

2. "C++ communication utilities" by Holmes and Flanders

3. "The Fax Modem Sourcebook", by Andrew Margolis

В электронном виде, естественно. Мои контакты в профиле, возможен взаимовыгодный обмен -- книг разных у меня много, а вот этих как раз нет.

Заранее спасибо.

decadent
()

аналог mgetty для оффтопика

Форум — General

Здравствуй, ЛОР! Хочу задать вопрос, суть такова.

Ищу аналог mgetty для виндовс. Лень писать самому обмен с ком-портом, а поскольку этот обмен в том числе предполагает и факсимильные сообщения -- использование mgetty позволило бы грабить корованы с удвоенной эффективностью. К сожалению, активное использование гугля результатов не дало, потому пишу сюда. Заранее спасибо.

PS: putty пробовал, но для работы с последовательным портом надо ее конфигурировать через GUI, что неудобно, потому как результат должен будет работать практически без участия человека.

decadent
()

[хочется странного] сбор данных с датчиков в веб-приложение

Форум — Web-development

Взываю к коллективному разуму ЛОРа, ибо таки хочется странного.

Есть некий датчик, показания которого через GSM модем передаются "на базу". Вот хочется сделать так, чтоб этой базой был некий сервер в интернете, а посетителю показывался график показаний датчика от времени. По идее, было бы достаточно CGI скрипта, но есть два момента. Во-первых, датчиков может быть много, а длина посылки -- от 300 байт до килобайта. И во-вторых -- хотелось бы реализовать все это на базе какой-либо CMS (например, Drupal). Что посоветуете?

 

decadent
()

RSS подписка на новые темы