AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 15.11.2011, 16:34   #1  
Rimantas is offline
Rimantas
Участник
 
304 / 16 (1) ++
Регистрация: 30.04.2004
Адрес: Utena , Lithuania
RS232 MSCommPort Output
Здраствуйте ,

Помогите мне , пожалуйста , разобраться . Пришлось такое , что надо вывести инфо через СОМ порт на радио сканер . Давненько вы помогли мне с ComPortMSComm и всю инфо от радио сканеров я считаю . С помочью таймера .

В init есть такое :

X++:
public void init()
{
   super();
   comPort = new ComPortMSComm();
   comPort.initParmDefault();
   element.setTimeOut( #GetBarkod, 100, true );
   atsijungt.enabled( false );
   baigt.enabled( false );
   lConnect = true;
}
Тогда есть метод GetBarkod :

X++:
    Str             input;
    ComVariant      res;
    ComVariant      send1  = new ComVariant();
    str 1           ch;
    int             i, template, u;
    Str             chk = "1234567890><";
    Str             cSend;
    Int             nGun, nBs;
    ;
    i     = comPort.InBufferCount();
    input = "";

    if ( i )
    {
      sleep( 30 );
      i = comPort.InBufferCount();
      ...
     if ( input )
           ... 
   }
   element.setTimeOut( #GetBarkod, 10 );
}
Радио сканер имеет свои коды управления . Я формирую такую строку инфо :

X++:
    ComVariant      send1  = new ComVariant();
    Str             cSend;
   ...
         cSend = cGunNr + num2char( 27 ) + " " + num2char( 91 ) +
         num2char( 50 ) + num2char( 74 );
         cSend += cBarcode; // первая строка 
         if ( rInv )
         {
            invTbl = InventTable::find( rInv.ItemId );
            cSend += num2char( 27 ) + " " + num2char( 91 ) +
            num2char( 50 ) + num2char( 59 ) + num2char( 49 ) +
            num2char( 72 ) + substr( invTbl.ItemName, 1, 16 ); // вторая строка
            cSend += num2char( 27 ) + " " + num2char( 91 ) +
            num2char( 51 ) + num2char( 59 ) + num2char( 49 ) +
            num2char( 72 ) + strfmt( "kiekis - %1", rInv.Qty );  // 3-я
         }
         else
         {
            cSend += num2char( 27 ) + " " + num2char( 91 ) +
            num2char( 50 ) + num2char( 59 ) + num2char( 49 ) +
            num2char( 72 ) + "Barkodas nerastas !";
         }
         cSend += num2char( 13 );

         nBs    = comPort.OutBufferSize();
         send1.bStr( cSend );
         comPort.SThreshold( strlen( cSend ) );
         comPort.Output( send1 );
Но вылезает ошибка : ... "Output" возвращает ошибку 0х800A01A ( unknow ) , который ознчает "Property is write-only" ...

Заранее большое спасибо ! С уваженим , Римантас
Старый 16.11.2011, 13:05   #2  
michel1971 is offline
michel1971
Участник
 
78 / 78 (3) ++++
Регистрация: 14.01.2011
метод класса ComPortMSComm криво написан, он ничего не должен возвращать
правильно так:
void Output(COMVariant _Output = COMVariant::createNoValue())
{
self.Output(_Output);
}
Старый 16.11.2011, 14:40   #3  
Rimantas is offline
Rimantas
Участник
 
304 / 16 (1) ++
Регистрация: 30.04.2004
Адрес: Utena , Lithuania
Цитата:
Сообщение от michel1971 Посмотреть сообщение
метод класса ComPortMSComm криво написан, он ничего не должен возвращать
правильно так:
void Output(COMVariant _Output = COMVariant::createNoValue())
{
self.Output(_Output);
}
Ваууу ! Вот как помогло ! Большое спасибо ! Теперь посылает обратно на радио сканер и нету ошибок !

Ещё попрошу помочь : я посылаю строки на радио сканер с кодами владения . Вот например такая строка :
cSend = cGunNr + num2char( 27 ) + num2char( 32 ) + num2char( 91 ) +
num2char( 50 ) + num2char( 74 ); // cGunNr - номер сканера

Ето будет Esc [2J . Ета команда должна очистит екранчик радиосканера . Но почему ето неделаеться . Вопрос в том , правильно я формирую строку команды , с numchar( acsiiCode ) , или нет ? В Ахапте я видел , что в тасках 1313 код есть Esc . Может быть таких надо изспользовать ?

Ещё раз огромное спасибо ! С уважением , Римантас
Старый 16.11.2011, 15:58   #4  
Rimantas is offline
Rimantas
Участник
 
304 / 16 (1) ++
Регистрация: 30.04.2004
Адрес: Utena , Lithuania
Цитата:
Сообщение от Rimantas Посмотреть сообщение
Ваууу ! Вот как помогло ! Большое спасибо ! Теперь посылает обратно на радио сканер и нету ошибок !

Ещё попрошу помочь : я посылаю строки на радио сканер с кодами владения . Вот например такая строка :
cSend = cGunNr + num2char( 27 ) + num2char( 32 ) + num2char( 91 ) +
num2char( 50 ) + num2char( 74 ); // cGunNr - номер сканера

Ето будет Esc [2J . Ета команда должна очистит екранчик радиосканера . Но почему ето неделаеться . Вопрос в том , правильно я формирую строку команды , с numchar( acsiiCode ) , или нет ? В Ахапте я видел , что в тасках 1313 код есть Esc . Может быть таких надо изспользовать ?

Ещё раз огромное спасибо ! С уважением , Римантас
Простите , моя ошибка - Esc [2J - я сделал пробел . Надо без него . Все работает превосходно ! Спасибо !
Теги
com port, rs232, сканер

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
RS232 com port Rimantas DAX: База знаний и проекты 32 01.09.2014 11:42
mfp: Dynamics AX 2012 – The compiler output window Blog bot DAX Blogs 0 31.08.2011 05:12
kamalblogs: Creating a custom compiler output type and displaying in the compiler output in Dynamics Ax 2009 Blog bot DAX Blogs 2 06.05.2011 21:50
sumitsaxfactor: Creating a custom compiler output type and displaying in the compiler output in Dynamics Ax 2009 Blog bot DAX Blogs 0 06.05.2011 02:19
DynamicsAxSCM: WMS in Microsoft Dynamics® AX 2009. Shipping Process Overview Blog bot DAX Blogs 4 21.04.2009 00:30

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 06:27.