[ОТВЕТИТЬ]
15.11.2017 17:06
УКМ_эксплуатант_2
 
Пытаюсь опросить СП802-Ф и вытащить длину очереди неотправленных документов. Зацепляюсь, читаю - все ок. Но скрипт потом зависает: такое ощущение, что ожидает от ФР-а EOF, а его все нет и нет...
Что неправильно делаю?
SQL код:
<?php
/* посылает по адресу запрос статуса и получает ответ */
    
$Port 6667;  //порт кассы
    
$IpAddr '192.168.128.172'//адрес кассы
    
$fp fsockopen($IpAddr$Port$errno$errstr30);
    if (!
$fp) {
        echo 
"$errstr ($errno)<br />\n";
    } else {
        
        
socket_set_blocking($fp,FALSE);
        
$out '<?xml version="1.0" encoding="UTF-8"?> 
                <ArmRequest><RequestBody><ProtocolLabel>OFDFNARMUKM</ProtocolLabel><ProtocolVersion>10.7</ProtocolVersion><RequestId>{48b9bd0c-a368-4aab-83ec-ba393e90d194}</RequestId> 
                <DateTime>2017-01-19 11:46:20</DateTime><Command>2</Command></RequestBody><RequestData><![CDATA[]]></RequestData></ArmRequest>'
;
        
        
fwrite($fp$out);
        while (!
feof($fp)) {
            echo 
fgets($fp);
        }
        
fclose($fp);
    }    
?>
socket_set_blocking($fp,FALSE); - пробовал и TRUE - нет эффекта...
15.11.2017 17:10
OlegON
 
Я с сокетами не работал, там точно не через CURL надо делать?
15.11.2017 17:15
student
 
Цитата:
УКМ_эксплуатант_2 что ожидает от ФР-а EOF, а его все нет и нет.
а кто сказал что он там должен быть ?
проверяй в цикле на приход </ArmResponse>

просмотрел сейчас что с сокета приходит - там последние 2-а символа ">" и перевод строки (код 10)
15.11.2017 18:12
twix
 
Как правильно Олег спросил: зачем геморроиться, если можно курлом?
16.11.2017 11:09
УКМ_эксплуатант_2
 
Курл не сработал
SQL код:
<?php
    $url 
"http://192.168.128.172:6667";
    
$out '<?xml version="1.0" encoding="UTF-8"?> 
                <ArmRequest><RequestBody><ProtocolLabel>OFDFNARMUKM</ProtocolLabel><ProtocolVersion>10.7</ProtocolVersion><RequestId>{48b9bd0c-a368-4aab-83ec-ba393e90d194}</RequestId> 
                <DateTime>2017-01-19 11:46:20</DateTime><Command>2</Command></RequestBody><RequestData><![CDATA[]]></RequestData></ArmRequest>'
;
    
$ch curl_init(); 
    
curl_setopt($chCURLOPT_URL$url); 
    
$result curl_exec($ch);
    
$json=json_decode($result,true);
    
print_r($json);    
    
curl_close($ch);
?>
16.11.2017 12:20
OlegON
 
Что-то я не понял судьбу $out... Присвоил значение и?
16.11.2017 12:34
student
 
Цитата:
УКМ_эксплуатант_2 Курл не сработал
ну почему же :) все работает (проверял с командной строки)
надо только на него в опциях таймаут устанавливать на операцию иначе возврата не будет - почему так - х\з

трассировка ответа
12:28:36.359000 == Info: Rebuilt URL to: 192.168.10.30:6667/
12:28:36.359000 == Info: Trying 192.168.10.30...
12:28:36.375000 == Info: Connected to 192.168.10.30 (192.168.10.30) port 6667 (#0)
12:28:36.437000 => Send header, 212 bytes (0xd4)
0000: POST / HTTP/1.1
0011: Host: 192.168.10.30:6667
002b: User-Agent: curl/7.45.0
0044: Accept: */*
0051: Content-Length: 594
0066: Expect: 100-continue
007c: Content-Type: multipart/form-data; boundary=--------------------
00bc: ----f46ae6990e41a956
00d2:
12:28:36.734000 <= Recv data, 531 bytes (0x213)
0000: <?xml version="1.0" encoding="UTF-8"?><ArmResponse><ResponseBody
0040: ><ProtocolLabel>OFDFNARMUKM</ProtocolLabel><ProtocolVersion>10.9
0080: </ProtocolVersion><RequestId>{3ed7bfee-f2fd-4c57-8462-271a32e2d0
00c0: 15}</RequestId><Result>1</Result><ErrorCategory>5</ErrorCategory
0100: ><ErrorSource>POS_CONTROLLER</ErrorSource><ErrorCode>5003</Error
0140: Code><ErrorDescription>Incorrect KKT command protocol data: Inc
0180: omplete data - start tag &quot;&lt;?xml version=&quot;1.0&quot;
01c0: encoding=&quot;UTF-8&quot;?&gt;&quot; not found . xml data:&quo
0200: t;POST / HTTP/1.1
12:28:36.734000 <= Recv data, 314 bytes (0x13a)
0000: Host: 192.168.10.30:6667
001a: User-Agent: curl/7.45.0
0033: Accept: */*
0040: Content-Length: 594
0055: Expect: 100-continue
006b: Content-Type: multipart/form-data; boundary=--------------------
00ab: ----f46ae6990e41a956
00c1:
00c3: &quot;</ErrorDescription><Command>1006</Command></ResponseBody><
0103: ResponseData><![CDATA[]]></ResponseData></ArmResponse>.
12:28:38.437000 == Info: Done waiting for 100-continue
12:28:38.453000 => Send data, 144 bytes (0x90)
0000: --------------------------f46ae6990e41a956
002c: Content-Disposition: form-data; name="xml_file"; filename="1.xml
006c: "
006f: Content-Type: application/xml
008e:
12:28:38.453000 => Send data, 402 bytes (0x192)
0000: ...<?xml version="1.0" encoding="UTF-8"?>
002c: <ArmRequest>
003b: <RequestBody>
004d: <ProtocolLabel>OFDFNARMUKM</ProtocolLabel>
007e: <ProtocolVersion>10.9</ProtocolVersion>
00ac: <RequestId>{48b9bd0c-a368-4aab-83ec-ba393e90d194}</RequestId
00ec: >
00f0: <DateTime>2017-01-19 11:46:20</DateTime>
011f: <Command>2</Command>
013a: </RequestBody>
014d: <RequestData>
015f: <![CDATA[]]>
0172: </RequestData>
0185: </ArmRequest>
12:28:38.453000 => Send data, 48 bytes (0x30)
0000:
0002: --------------------------f46ae6990e41a956--
12:28:38.859000 <= Recv data, 1475 bytes (0x5c3)
0000: <?xml version="1.0" encoding="UTF-8"?><ArmResponse><ResponseBody
0040: ><ProtocolLabel>OFDFNARMUKM</ProtocolLabel><ProtocolVersion>10.9
0080: </ProtocolVersion><RequestId>{48b9bd0c-a368-4aab-83ec-ba393e90d1
00c0: 94}</RequestId><Result>0</Result><ErrorCategory>0</ErrorCategory
0100: ><ErrorSource>FN_CONTROLLER</ErrorSource><ErrorCode>0</ErrorCode
0140: ><ErrorDescription></ErrorDescription><Command>3</Command></Resp
0180: onseBody><ResponseData><![CDATA[<ArmGetStatus><LastCommand>33423
01c0: 84</LastCommand><LastCommandStatus>55</LastCommandStatus><LastCo
0200: mmandExecTime>2687026</LastCommandExecTime><NetworkInterface>eth
0240: 0 MAC=B8:27:EB:11:62:AC IP=192.168.10.30</NetworkInterface><
0280: PaperWidth>63</PaperWidth><KKTFWVersion>008.18.262</KKTFWVersion
02c0: ><FNStatus><LifePhase>3</LifePhase><CurrentDocType>0</CurrentDoc
0300: Type><CurrentDocData>0</CurrentDocData><ShiftState>1</ShiftState
0340: ><StatusNeedChange>0</StatusNeedChange><StatusEndingResource>0</
0380: StatusEndingResource><StatusOverflow>0</StatusOverflow><StatusOv
03c0: erdueSending>0</StatusOverdueSending><LastDocDateTime></LastDocD
0400: ateTime><LastDocNumber>1322</LastDocNumber><FactoryNum>999907890
0440: 0005220</FactoryNum><ExpirationDate>2018-04-04 00:00:00</Expirat
0480: ionDate><FWVersion>fn debug v 1.33</FWVersion></FNStatus><OFDSta
04c0: tus><ExchangeStatus>1</ExchangeStatus><MessageReadStarted>0</Mes
0500: sageReadStarted><QueueLength>0</QueueLength><FirstQueueDocNumber
0540: >0</FirstQueueDocNumber><FirstQueueDocDateTime></FirstQueueDocDa
0580: teTime></OFDStatus></ArmGetStatus>]]></ResponseData></ArmRespons
05c0: e>.
12:29:16.359000 == Info: Operation timed out after 40000 milliseconds with 2320 bytes received
12:29:16.359000 == Info: Closing connection 0
20.11.2017 13:32
УКМ_эксплуатант_2
 
Сделал по рекомендации student:
SQL код:
проверяй в цикле на приход </ArmResponse
Теперь проблема с разбором ответа:
Делаю так:
SQL код:
//$Stroka - ответ, полученный от ФР-а
$xml simplexml_load_string($Stroka);
$json json_encode($xml);
$array json_decode($json,TRUE);
var_dump($array); print "\n\n\n"
Показывает:
SQL код:
array(2) {
  [
"ResponseBody"]=>
  array(
9) {
    [
"ProtocolLabel"]=>
    
string(11"OFDFNARMUKM"
    
["ProtocolVersion"]=>
    
string(4"10.7"
    
["RequestId"]=>
    
string(38"{993C603A-48A5-45F7-9C44-10E6A5CB81CA}"
    
["Result"]=>
    
string(1"0"
    
["ErrorCategory"]=>
    
string(1"0"
    
["ErrorSource"]=>
    
string(13"FN_CONTROLLER"
    
["ErrorCode"]=>
    
string(1"0"
    
["ErrorDescription"]=>
    array(
0) {
    }
    [
"Command"]=>
    
string(1"3"
  
}
  [
"ResponseData"]=>
  array(
0) {
  }

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

З.Ы. А тут есть возможность "сворачивать" длинные исходники под спойлер?
20.11.2017 13:59
student
 
ты не
Цитата:
УКМ_эксплуатант_2 $array
покажи а сам ответ целиком
Цитата:
УКМ_эксплуатант_2 //$Stroka - ответ, полученный от ФР-а
возможно что твои енкод и декод не так как надо отрабатывают :)
20.11.2017 14:06
KirillHome
 
Цитата:
УКМ_эксплуатант_2 ...
З.Ы. А тут есть возможность "сворачивать" длинные исходники под спойлер?
Минимум два варианта:

[spl=Опция]значение[/spl]
Пример [spl=End of the Game]Cloud kills Sepiroth[/spl]
End of the Game:
Cloud kills Sepiroth


[off]значение[/off]
Пример [off]Пример[/off]
скрытое
20.11.2017 14:06
УКМ_эксплуатант_2
 
Ответ такой:
SQL код:
<?xml version="1.0" encoding="UTF-8"?><ArmResponse><ResponseBody><ProtocolLabel>OFDFNARMUKM</ProtocolLabel><ProtocolVersion>10.7</ProtocolVersion><RequestId>{993C603A-48A5-45F7-9C44-10E6A5CB81CA}</RequestId><Result>0</Result><ErrorCategory>0</ErrorCategory><ErrorSource>FN_CONTROLLER</ErrorSource><ErrorCode>0</ErrorCode><ErrorDescription></ErrorDescription><Command>3</Command></ResponseBody><ResponseData><![CDATA[<ArmGetStatus><LastCommand>4915262</LastCommand><LastCommandStatus>5505099</LastCommandStatus><LastCommandExecTime>2424864</LastCommandExecTime><NetworkInterface>eth0   MAC=B8:27:EB:70:97:22   IP=192.168.128.172</NetworkInterface><PaperWidth>40</PaperWidth><KKTFWVersion>008.16</KKTFWVersion><FNStatus><LifePhase>3</LifePhase><CurrentDocType>0</CurrentDocType><CurrentDocData>0</CurrentDocData><ShiftState>0</ShiftState><StatusNeedChange>0</StatusNeedChange><StatusEndingResource>0</StatusEndingResource><StatusOverflow>0</StatusOverflow><StatusOverdueSending>0</StatusOverdueSending><LastDocDateTime></LastDocDateTime><LastDocNumber>124</LastDocNumber><FactoryNum>9999078900007551</FactoryNum><ExpirationDate>2018-10-08 00:00:00</ExpirationDate><FWVersion>fn debug v 1.37</FWVersion></FNStatus><OFDStatus><ExchangeStatus>0</ExchangeStatus><MessageReadStarted>0</MessageReadStarted><QueueLength>0</QueueLength><FirstQueueDocNumber>0</FirstQueueDocNumber><FirstQueueDocDateTime></FirstQueueDocDateTime></OFDStatus></ArmGetStatus>]]></ResponseData></ArmResponse>
20.11.2017 14:14
student
 
Цитата:
УКМ_эксплуатант_2 Ответ такой:
там все данные есть - смотри где именно часть теряется
на всякий случай - внутри [CDATA[]] обычный хмл, только без заголовка
21.11.2017 11:38
УКМ_эксплуатант_2
 
Получилось вот так корявенько, на уровне бейсика, но работает.
Иногда "подвисает" в момент УЖЕ ПОДКЛЮЧИЛИСЬ (нет варнинга что fsockopen не подключилась) , но все еще читает (вероятно касса занята и не может ответить). Как отловить сию беду?
Ну и результат "завернул" в XML - не хотелось делать класс под это дело...
Текст файлика:
SQL код:
<?php        
function GetInfoOneKKM($parAdr){
    
//функция по айпишнику цепляется к фискальнику и выдает длину очереди неотправленных документов и 
    //дату первого неотправленного документа
    
$Port 6667;  //порт кассы
    
$IpAddr    =    $parAdr;
     
$RRR "</ArmResponse>\n";
    
$fp fsockopen($IpAddr$Port$errno$errstr5);
    if (!
$fp) {        
        return 
'<?xml version="1.0" encoding="UTF-8"?><Otvet><KodV>' $errno '</KodV><KolvoDok></KolvoDok><DataDok></DataDok><Dt_Stop></Dt_Stop></Otvet>';
    } else {
        
socket_set_blocking($fp,FALSE);
        
$strGUID    =    com_create_guid();
        
$strDt date "Y-m-d G:i:s" );
        
$out '<?xml version="1.0" encoding="UTF-8"?> 
                <ArmRequest><RequestBody><ProtocolLabel>OFDFNARMUKM</ProtocolLabel><ProtocolVersion>10.7</ProtocolVersion><RequestId>' 
$strGUID '</RequestId> 
                <DateTime>' 
$strDt '</DateTime><Command>2</Command></RequestBody><RequestData><![CDATA[]]></RequestData></ArmRequest>';
        
fwrite($fp$out);
        
$Priznak=1;
        
$Stroka "";
        while (
$Priznak) {
            
$char fgetc($fp);            
            
$Stroka $Stroka $char;
            if (
iconv_strlen($Stroka)>13){
                
$Str_temp iconv_substr($Stroka, -15); 
                if (
$Str_temp==$RRR)
                    
$Priznak 0;
            }
        };
        
fclose($fp);
        
$intPosB    =    strpos ($Stroka,"<QueueLength>");
        
$intPosE    =    strpos ($Stroka,"</QueueLength>");
        
$KolvoDok    =    mb_substr($Stroka,$intPosB+13,$intPosE-$intPosB-13);
        
$intPosB    =    strpos ($Stroka,"<FirstQueueDocDateTime>");
        
$intPosE    =    strpos ($Stroka,"</FirstQueueDocDateTime>");
        
$DataDok    =    mb_substr($Stroka,$intPosB+23,$intPosE-$intPosB-23);
        
$intPosB    =    strpos ($Stroka,"<ExpirationDate>");
        
$intPosE    =    strpos ($Stroka,"</ExpirationDate>");
        
$DataIok    =    mb_substr($Stroka,$intPosB+16,$intPosE-$intPosB-16);
        return 
'<?xml version="1.0" encoding="UTF-8"?><Otvet><KodV>0</KodV><KolvoDok>' $KolvoDok 
                
'</KolvoDok><DataDok>' $DataDok '</DataDok><Dt_Stop>' $DataIok '</Dt_Stop></Otvet>';
    };
};
?>
19.12.2017 11:11
ctarosta
 
Цитата:
student ну почему же :) все работает (проверял с командной строки)
надо только на него в опциях таймаут устанавливать на операцию иначе возврата не будет - почему так - х\з
Можно попросить команду CURL которую отправляете? у меня почему-то не получается
19.12.2017 12:50
student
 
Цитата:
ctarosta Можно попросить команду CURL которую отправляете
в архиве батник на отправку, файл s1.xml - что отправляем, r1.xml - что приходит в ответ и e1.txt - детализация (возможные ошибки)
Вложения
Тип файла: rar 000.rar (2.3 Кб, 3 просмотров)
20.12.2017 07:27
ctarosta
 
так и не получилось
ФР подключен к кассе по PPP. Его адрес: 192.168.250.2
Касса на линуксе.

Код:
ppp0      Link encap:Point-to-Point Protocol
          inet addr:192.168.250.1  P-t-P:192.168.250.2  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:17 errors:0 dropped:0 overruns:0 frame:0
          TX packets:21 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:3
          RX bytes:2823 (2.7 Kb)  TX bytes:2344 (2.2 Kb)
При выполнении команды:
Код:
curl --connect-timeout 10 --max-time 20 --trace-ascii "/tmp/000/e1.TXT" -F "xml_file=@/tmp/000/fr.xml" http://192.168.250.2:6667 -o "/tmp/000/r1.XML"
операция вылетает по таймауту, ответа CURL не получает:
Код:
curl: (28) Operation timed out with 0 out of -1 bytes received
В логах ФР:
Код:
20-12-2017 12:19:03.744: 0x730ff410: WARNING: transport_tcp: read() failed
20-12-2017 12:19:03.772: 0x730ff410: WARNING: transport_tcp: read() failed
20-12-2017 12:19:03.800: 0x730ff410: WARNING: transport_tcp: read() failed
20-12-2017 12:19:03.827: 0x730ff410: WARNING: transport_tcp: read() failed
20-12-2017 12:19:03.855: 0x730ff410: WARNING: transport_tcp: read() failed
20-12-2017 12:19:03.883: 0x730ff410: WARNING: transport_tcp: read() failed
20-12-2017 12:19:03.911: 0x730ff410: WARNING: transport_tcp: read() failed
20-12-2017 12:19:03.939: 0x730ff410: WARNING: transport_tcp: read() failed
20-12-2017 12:19:03.967: 0x730ff410: WARNING: transport_tcp: read() failed
20-12-2017 12:19:03.994: 0x730ff410: WARNING: transport_tcp: read() failed
20-12-2017 12:19:04.022: 0x730ff410: WARNING: transport_tcp: read() failed
20-12-2017 12:19:04.050: 0x730ff410: WARNING: transport_tcp: read() failed
20-12-2017 12:19:04.078: 0x730ff410: WARNING: transport_tcp: read() failed
20-12-2017 12:19:04.106: 0x730ff410: WARNING: transport_tcp: read() failed
20-12-2017 12:19:04.133: 0x730ff410: WARNING: transport_tcp: read() failed
20-12-2017 12:19:04.161: 0x730ff410: WARNING: transport_tcp: read() failed
20-12-2017 12:19:04.188: 0x730ff410: WARNING: transport_tcp: read() failed
20-12-2017 12:19:04.216: 0x730ff410: WARNING: transport_tcp: read() failed
20-12-2017 12:19:04.244: 0x730ff410: WARNING: transport_tcp: read() failed
20-12-2017 12:19:04.272: 0x730ff410: WARNING: transport_tcp: read() failed
20-12-2017 12:19:04.300: 0x730ff410: WARNING: transport_tcp: read() failed
20-12-2017 12:19:04.327: 0x730ff410: WARNING: transport_tcp: read() failed
20-12-2017 12:19:04.355: 0x730ff410: WARNING: transport_tcp: read() failed
20-12-2017 12:19:04.383: 0x730ff410: WARNING: transport_tcp: read() failed
20-12-2017 12:19:04.411: 0x730ff410: WARNING: transport_tcp: read() failed
20-12-2017 12:19:04.438: 0x730ff410: WARNING: transport_tcp: read() failed
20-12-2017 12:19:04.466: 0x730ff410: WARNING: transport_tcp: read() failed
20-12-2017 12:19:04.494: 0x730ff410: WARNING: transport_tcp: read() failed
20-12-2017 12:19:04.522: 0x730ff410: WARNING: transport_tcp: read() failed
20-12-2017 12:19:04.549: 0x730ff410: WARNING: transport_tcp: read() failed
20-12-2017 12:19:04.577: 0x730ff410: WARNING: transport_tcp: read() failed
20-12-2017 12:19:04.578: 0x730ff410: WARNING: transport_tcp: CListenServer::handleReadyReadTransportExtMode() - read timeout exceeded
20-12-2017 12:19:04.590: 0x730ff410:  INFO:     POS_CONTROLLER: POS=>KKT "<?xml version="1.0" encoding="UTF-8"?> <ArmRequest> <RequestBody> <ProtocolLabel>OFDFNARMUKM</ProtocolLabel> <ProtocolVersion>10.10</ProtocolVersion> <RequestId>{48b9bd0c-a368-4aab-83ec-ba393e90d194}</RequestId> <DateTime>2017-12-20 08:37:20</DateTime> <Command>2</Command> </RequestBody> <RequestData> <![CDATA[]]> </RequestData> </ArmRequest> --curlHqU53MphNa9v0ffsT4F8uj21Fwj--"
20-12-2017 12:19:04.601: 0x730ff410:  INFO:     POS_CONTROLLER: POS=>KKT {48b9bd0c-a368-4aab-83ec-ba393e90d194} EXTCMD_POS_GETSTATUS(0x2) - processing started
20-12-2017 12:19:04.602: 0x730ff410:  INFO:     POS_CONTROLLER: POS=>KKT {48b9bd0c-a368-4aab-83ec-ba393e90d194} EXTCMD_POS_GETSTATUS(0x2) - processing finished
20-12-2017 12:19:04.610: 0x738ff410:  INFO:   MACRO_CONTROLLER: --- cmd[646] m_cmdCode="ARMCMD_MACRO_GETSTATUS(0x6008)" m_params="" process begin
20-12-2017 12:19:04.623: 0x74aff410:  INFO:      FN_CONTROLLER: --- CFNController::cmdProcess() - cmd[647] m_cmdCode="ARMCMD_FN_STATUS(0x2008)" m_params="" process begin
20-12-2017 12:19:04.650: 0x74aff410:  INFO:      FN_CONTROLLER: fnstatus = 3
20-12-2017 12:19:04.650: 0x74aff410:  INFO:      FN_CONTROLLER: --- CFNController::cmdProcess() cmd[647] m_cmdCode="ARMCMD_FN_STATUS(0x2008)" m_params="" process end
20-12-2017 12:19:04.662: 0x738ff410:  INFO:   MACRO_CONTROLLER: --- cmd[646] m_cmdCode="ARMCMD_MACRO_GETSTATUS(0x6008)" m_params="" process end
20-12-2017 12:19:04.674: 0x730ff410:  INFO:     POS_CONTROLLER: --- cmd[649=>646] m_cmdCode="ARMCMD_MACRO_GETSTATUS_RESPONSE(0x6009)" m_params="" CPOSController::cmdProcess() begin
20-12-2017 12:19:04.676: 0x730ff410:  INFO:     POS_CONTROLLER: KKT=>POS {48b9bd0c-a368-4aab-83ec-ba393e90d194} EXTCMD_POS_GETSTATUS_RESPONSE(0x3) - response to send(str): size(str)=1475 size(bin)=1475 data(str)="<?xml version="1.0" encoding="UTF-8"?><ArmResponse><ResponseBody><ProtocolLabel>OFDFNARMUKM</ProtocolLabel><ProtocolVersion>10.10</ProtocolVersion><RequestId>{48b9bd0c-a368-4aab-83ec-ba393e90d194}</RequestId><Result>0</Result><ErrorCategory>0</ErrorCategory><ErrorSource>FN_CONTROLLER</ErrorSource><ErrorCode>0</ErrorCode><ErrorDescription></ErrorDescription><Command>3</Command></ResponseBody><ResponseData><![CDATA[<ArmGetStatus><LastCommand>0</LastCommand><LastCommandStatus>0</LastCommandStatus><LastCommandExecTime>5</LastCommandExecTime><NetworkInterface>eth0 MAC=B8:27:EB:92:4B:07 IP=,ppp0 MAC= IP=192.168.250.2</NetworkInterface><PaperWidth>54</PaperWidth><KKTFWVersion>008.19.308</KKTFWVersion><FNStatus><LifePhase>3</LifePhase><CurrentDocType>0</CurrentDocType><CurrentDocData>0</CurrentDocData><ShiftState>0</ShiftState><StatusNeedChange>0</StatusNeedChange><StatusEndingResource>0</StatusEndingResource><StatusOverflow>0</StatusOverflow><StatusOverdueSending>0</StatusOverdueSending><LastDocDateTime></LastDocDateTime><LastDocNumber>82824</LastDocNumber><FactoryNum>8710000100447708</FactoryNum><ExpirationDate>2018-06-27 00:00:00</ExpirationDate><FWVersion>fn_v_1_0</FWVersion></FNStatus><OFDStatus><ExchangeStatus>0</ExchangeStatus><MessageReadStarted>0</MessageReadStarted><QueueLength>0</QueueLength><FirstQueueDocNumber>0</FirstQueueDocNumber><FirstQueueDocDateTime></FirstQueueDocDateTime></OFDStatus></ArmGetStatus>]]></ResponseData></ArmResponse>"
20-12-2017 12:19:04.678: 0x730ff410:  INFO:     POS_CONTROLLER: KKT=>POS {48b9bd0c-a368-4aab-83ec-ba393e90d194} EXTCMD_POS_GETSTATUS_RESPONSE(0x3) - SUCCESS: response sent
20-12-2017 12:19:04.679: 0x730ff410:  INFO:     POS_CONTROLLER: --- cmd[649=>646] m_cmdCode="ARMCMD_MACRO_GETSTATUS_RESPONSE(0x6009)" m_params="" CPOSController::cmdProcess() end
Возникают какие-то ошибки чтения, затем команда обрабатывается успешно. ФР генерит ответ, но CURL его не получает.

Помогите, куда копать?
20.12.2017 07:33
student
 
Цитата:
ctarosta операция вылетает по таймауту, ответа CURL не получает:
судя по логам ответ есть, м.б. просто стоит увеличить таймаут в 2 раза ?
20.12.2017 11:29
ctarosta
 
не получилось. пробовал таймаут выставить до 10 минут:

Код:
curl --connect-timeout 10 --max-time 600 -F "xml_file=@/tmp/000/fr.xml" http://192.168.250.2:6667 -o "/tmp/000/r1.XML" -v
* About to connect() to 192.168.250.2:6667
* Connected to 192.168.250.2 (192.168.250.2) port 6667
> POST / HTTP/1.1
User-Agent: curl/7.9.8 (i386-redhat-linux-gnu) libcurl 7.9.8 (OpenSSL 0.9.7a) (ipv6 enabled)
Host: 192.168.250.2:6667
Pragma: no-cache
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
Content-Length: 523
Expect: 100-continue
Content-Type: multipart/form-data; boundary=curlSDJ1PR29h6vDnB5NB0OPYwxv16f

  % Total    % Received % Xferd  Average Speed          Time             Curr.
                                 Dload  Upload Total    Current  Left    Speed
100   523    0     0  100   523      0      0  0:10:00  0:10:00  0:00:00     0
* Connection #0 left intact
curl: (28) Operation timed out with 0 out of -1 bytes received
* Closing connection #0
20.12.2017 11:57
student
 
Цитата:
ctarosta таймаут выставить до 10 минут:
ты выставил общий таймаут на операцию, а попробуй на коннект и возможно надо под линуксом какими либо опциями курла поиграться - может ипв6 или ссл не нравится - я все из под винды 10-ки х64 делал
20.12.2017 22:00
OlegON
 
сдается мне, что связи вообще нет
попробуй
Код:
telnet 192.168.250.2 6667
оно вообще зацепится?
21.12.2017 03:54
ctarosta
 
зацепится:
Код:
telnet 192.168.250.2 6667
Trying 192.168.250.2...
Connected to 192.168.250.2.
Escape character is '^]'.
^]
telnet>
В документации сказано:
Цитата:
Для подключений типа Ethernet или RS-232(PPP) для работы с ККТ следует использовать интерфейс сокетов TCP/IP.
ККТ принимает входящие соединения по протоколу TCP на порту 6667.
....
Данные управляющего протокола ККТ передаются в виде сообщений управляющего протокола в формате XML в кодировке UTF-8.
Вот вроде все так и делаю, но в ответ получаю только ошибки чтения: WARNING: transport_tcp: read() failed
21.12.2017 07:26
OlegON
 
Тогда приколы фильтрации или глюков PPP :( Попробуй MTU занизить...
Опции темы


Часовой пояс GMT +3, время: 10:37.

 

Форум сделан на основе vBulletin®
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd. Перевод: zCarot и OlegON
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.