BG Development


Страници: (2) 1 [2]   ( Първото ново мнение ) Reply to this topicStart new topicStart Poll

> Комуникация с фискален принтер Датекс
sunwithface
Публикувано на: 10-05-2019, 08:56
Quote Post



Име:
Група: Потребител
Ранг: Новопостъпил

Мнения: 9
Регистриран на: 09.05.19



С доста проби-грешки и търсене на проблема, успях да установя, че функция за сумата е един голям бъг. Написах я наново, следвайки документацията (грешката ми беше, че гледах примери в нета, а не самата документация).
Сега, обаче, проблемът е при предаването на данни.
По-долу е кодът за изчисление на сумата (ъм момента изчислява коректно, според мен)
Пренаписахме кода на PHP с идеята да го навържем към уеб приложението.
CODE

private function _getBCC($data){
       $bcc = 0;
       for ($i = 0; $i < strlen($data); $i++){
           $bcc .= $bcc . ord($data[$i]);
       }

       $data = dechex($data);
       $data = sprintf('%04s', $data);

       $result = '';
       for($i = 0; $i < strlen($data); $i++){
           $result .= chr(0x30 + hexdec($data[$i]));
       }

       return $result;
   }


Функцията за форматиране на съобщението:
CODE

   private function _formatData($data, $quantity, $price){
       $words = explode(' ', $data);
       $str = '';

       foreach ($words as $word) {
           $str .= $word . $this->lf;
       }
       return $str . $this->tab . $quantity . $this->tab . $price;
   }


Функцията за формиране на целия пакет:
CODE

   public function formatPacket($seq, $cmd, $data, $item = null, $quantity = null, $price = null){
       if (!empty($item)) $data = $this->_formatData($item, $quantity, $price);
       $bccTmp = 0x24 + strlen($data) + $seq + $cmd + strlen($data) + $this->post;
       return chr($this->pre) . chr(0x24) . chr($seq) . chr($cmd) . chr($data) . chr($this->post) . $this->_getBCC($bccTmp) . chr($this->terminator);
   }


Извикване на метода:
CODE

echo $datecs -> formatPacket(0x21, 0x4A, '');
echo $datecs -> formatPacket(0x40, 0x30, '1,0000,1');


Ако е възможно да дадете някакви насоки как да подходя с данните? Виждате ли някакъв проблем с кода?

Това мнение е било редактирано от sunwithface на 10-05-2019, 08:58
PMEmail Poster
Top
thrawn
Публикувано на: 10-05-2019, 09:09
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 2536
Регистриран на: 17.01.17



Нещо тая конкатенация дето я ползвате за събиране ме притеснява сериозно.
Това в първия ти пост изглежда ОК, като изключим глупостта със събирането.

https://forums.bgdev.org/index.php?showtopi...ndpost&p=329826 това е пример на ПХП, може да ти е полезен.

Това мнение е било редактирано от thrawn на 10-05-2019, 09:13
PMEmail Poster
Top
sunwithface
Публикувано на: 10-05-2019, 09:48
Quote Post



Име:
Група: Потребител
Ранг: Новопостъпил

Мнения: 9
Регистриран на: 09.05.19



QUOTE (thrawn @ 10-05-2019, 09:09)
Нещо тая конкатенация дето я ползвате за събиране ме притеснява сериозно.
Това в първия ти пост изглежда ОК, като изключим глупостта със събирането.

https://forums.bgdev.org/index.php?showtopi...ndpost&p=329826 това е пример на ПХП, може да ти е полезен.

Много ти благодаря! Ще го погледна
PMEmail Poster
Top
1 потребители преглеждат тази тема в момента (1 гости, 0 анонимни потребители)
Потребители, преглеждащи темата в момента:

Topic Options Страници: (2) 1 [2]  Reply to this topicStart new topicStart Poll

 


Copyright © 2003-2019 | BG Development | All Rights Reserved
RSS 2.0