Здраствуйте ,
Помогите мне , пожалуйста , разобраться . Пришлось такое , что надо вывести инфо через СОМ порт на радио сканер . Давненько вы помогли мне с 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" ...
Заранее большое спасибо ! С уваженим , Римантас