Перейти до

freebsd php+cuau =дивний глюк


Рекомендованные сообщения

Доброго дня

Випала на мою голову задачка.

є машина на фрі. на неї підчіплено по рс232 2 пристроя.

 

треба на пхп щось там прочитати\записати\в базу данних пхнути\ в кроні відповідно

 

отже для першого пристроя якось так

 

function control_get_temp()
{

exec("echo 'INPUT B:TEMP?' > /dev/cuau0");

    if (!$handle = fopen('/dev/cuau0', 'r')) {
         echo "Не могу открыть файл ($filename)";
         exit;
    }
	
  	flock($handle, LOCK_EX);
	$buffer = fread($handle,9);
 	flock($handle, LOCK_UN);

fclose($handle);
return $buffer;
}

Все прекрасно

для другого почався ад,

 

щось подібне(стрічки закоменчені - різні спроби )

function control_get_e720()
{
#exec("echo '\x01' > /dev/cuau1");

    if (!$handle = fopen('/dev/cuau1', 'w')) {
       echo "Не могу открыть файл ($filename)";
       exit;
   }
	 	

	ftruncate($handle,0);
	rewind ($handle);
	 if (fwrite($handle, pack("C", 1)) === FALSE) {
        echo "Не могу произвести запись в файл ($filename)";
        exit;
   }
fclose($handle);
   if (!$handle = fopen('/dev/cuau1', 'r')) {
       echo "Не могу открыть файл ($filename)";
       exit;
   }
	
	$buffer = fread($handle,22);
	fclose($handle);
	
 	

$in= preg_split('//', $buffer, -1, PREG_SPLIT_NO_EMPTY);
#$buffer='';
$i=0;
#print_r ($in);
while ($i<=21)
			{
			$in[$i]=ord($buffer[$i]);
			#$buffer.=chr($in[$i]);
			$i++;
			}
			
			
return e720_decode($in);
}

Отже проблема в наступному.

Минулого тижня без цих екскриментів працювало а потім стався зафтик

 

пишу до прикладу символ \х01

результат пристрій іноді схавує(1-2 рази) і все, зафтик. ребутати треба

 

в той же час пристрій постійно сре потрібними данними

але сталось так що данні почали приходити зовсім не ті....

 

тє

вивід до прикладу глюкнутий(данні бінарні, я іх обробляю але толку мало)

 

temp:19.239014 e720:-1880 2380284 0
temp:19.237915 e720:32 2.105411E-82 8192
temp:19.236145 e720:2.022E+40 61952 0
temp:19.235870 e720:0 1.6515072E+79 3.2E+68
temp:19.235901 e720:67 4.211488E+134 0
temp:19.235992 e720:-1880 1.6514977E+78 0
temp:19.234955 e720:8259 2380540 0
temp:19.234711 e720:-7570 1.6514817E+86 0
temp:19.234100 e720:-1880 6.7E+129 8256
temp:19.233398 e720:-1880 1671.1492 8256
temp:19.232574 e720:0 5.438719E+42 0
temp:19.232025 e720:-7.68E+81 1.0690593E-103 3.2E+68
temp:19.231049 e720:-1880 1671.1492 8256
temp:19.230499 e720:1.6451E+132 1671.1492 0
temp:19.229126 e720:0 2379772 0
temp:19.227173 e720:2.022E+40 1.5794213E+39 0
temp:19.225769 e720:2.022E+40 2379516 0
temp:19.222992 e720:-1880 1.6515072E+88 0
temp:19.221344 e720:-1880 1.6515072E+78 0
temp:19.220337 e720:-7.68E+84 1.5794213E+39 0
temp:19.219666 e720:2.022E+40 1.5794213E+39 0
temp:19.220673 e720:-2550 5.242111E+42 0
temp:19.221832 e720:-1880 842.144 0
temp:19.222076 e720:-1880 1671.1492 8256
temp:19.222839 e720:82590 2380284 0
 

 


 

темп  - відповідно пристрій 1(все ок)

е720 - зло.... данні мали би бути приблизно такі

 

temp:19.222839 e720:2000 9.2е-13 0
 

 

термінал

name# stty -f /dev/cuau0
speed 9600 baud;
lflags: -echo
oflags: -oxtabs
cflags: cs8 -parenb
name# stty -f /dev/cuau1
speed 9600 baud;
lflags: -echo
oflags: -oxtabs
cflags: cs8 -parenb
name#
 

 


Може хтось підкине ідею де то пошпортати...  через таку дріботу не хочу ставити машину з уіндовсом і застосовувати програми комплектні(на уіндовсі все ок, код декодування використав такий самий і як писав до минулого тижні працювало, допоки додому не пішов і машину не погасив)

 

 

Ссылка на сообщение
Поделиться на других сайтах
Опубліковано: (відредаговано)

питання провисло вповітрі. вирішив так.

1. написав програмулю на делфі для цього адського пристроя, залив на тонкий термінал.

 

2. читає тонкий і відправляє на сервер в субд.

3. відповідно далі працює вебморда на сервері

 

 

якщо хтось запропонує вирішення простіше - буду вдячний

Відредаговано lex.lviv
Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Вхід

Уже зарегистрированы? Войдите здесь.

Войти сейчас
  • Зараз на сторінці   0 користувачів

    Немає користувачів, що переглядають цю сторінку.

×
×
  • Створити нове...