Jump to content

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


Recommended Posts

Доброго дня

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

є машина на фрі. на неї підчіплено по рс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#
 

 


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

 

 

Link to post
Share on other sites

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

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

 

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

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

 

 

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

Edited by lex.lviv
Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...