15.11.2011, 16:34 | #1 |
Участник
|
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; } 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 ); Заранее большое спасибо ! С уваженим , Римантас |
|
16.11.2011, 13:05 | #2 |
Участник
|
метод класса ComPortMSComm криво написан, он ничего не должен возвращать
правильно так: void Output(COMVariant _Output = COMVariant::createNoValue()) { self.Output(_Output); } |
|
16.11.2011, 14:40 | #3 |
Участник
|
Цитата:
Ещё попрошу помочь : я посылаю строки на радио сканер с кодами владения . Вот например такая строка : 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
Ваууу ! Вот как помогло ! Большое спасибо ! Теперь посылает обратно на радио сканер и нету ошибок !
Ещё попрошу помочь : я посылаю строки на радио сканер с кодами владения . Вот например такая строка : cSend = cGunNr + num2char( 27 ) + num2char( 32 ) + num2char( 91 ) + num2char( 50 ) + num2char( 74 ); // cGunNr - номер сканера Ето будет Esc [2J . Ета команда должна очистит екранчик радиосканера . Но почему ето неделаеться . Вопрос в том , правильно я формирую строку команды , с numchar( acsiiCode ) , или нет ? В Ахапте я видел , что в тасках 1313 код есть Esc . Может быть таких надо изспользовать ? Ещё раз огромное спасибо ! С уважением , Римантас |
|
Теги |
com port, rs232, сканер |
|
|