Új hozzászólás Aktív témák

  • Onishi

    tag

    Sziasztok!

    Előre is bocs a kisregényért.
    Visual Basic Script-ben történő soros port kezeléssel kapcsolatos problémába ütköztem. Hátha van köztetek olyan aki jártas ebben.
    Egy fényújságot kellene vezérelnem, amin állandóan változó adatokat kellene megjelenítenem. A scripttel amit írtam, 5-20 másodperc közötti időtartamonként küldök ki új szöveget rá.
    2 problémába ütköztem:

    1.) A script ilyen szempontból jól működik, küldi is az adatokat szépen, de van amikor egyszercsak meghülyül a soros port kezelés és elkezdi megállás nélkül ontani magából a teljesen értelmetlen adatokat (többnyire csak 0-ákat, de van hogy random karaktereket), amiket a scriptben biztos, hogy nem generálok, és olyan sebességgel történik mindez, amit szintén nem küldök a scriptből, hiszen azt másodpercenként hívom meg, de mint már említettem leggyorsabb kiküldés is minimum 5 másodpercenként van. Szóval valami behülyül, és ezt csak úgy tudom megfékezni, hogy leállítom a scriptet és a soros drivert is újraindítom (soros-ethernet átalakító van a pc és fényújság között). Gondoltam az utóbbira is, hogy annak van valami baja, de a gép saját soros portján küldve az adatokat szintén előjön a hibajelenség.

    2.) Ha a fényújságot tegyük fel áramtalanítják, vagy nem elérhető, attól még a script küldi az adakat, ami telíti a buffert, majd ha a fényújságot visszakapcsolják, akkor az összegyűlt adatokat elkezdi kiküldeni megállás nélkül, amit a fényújság nem tud értelmezni és meghülyül tőle. Erre valószínű jó lenne az OutBufferCount = 0 parancs, de ez csak MSCOMM32-vel működne, de azt nem tudom használni VBScript alól, mert licenszet kér. Helyette az ingyenesen letölthető NetCommOCX-et használom, de az nem tudja ezt a parancsot, vagy legalábbis nem működik.

    Bemásolom a soros port kezelés részt a scriptből:

    Set objComport = CreateObject("NETCommOCX.NETComm")
    objComport.CommPort = 2
    objComport.Settings = "9600,N,8,N"
    objComport.PortOpen = True
    objComport.OutBufferCount = 0
    objComport.Output = Chr(21)
    objComport.Output = Chr(18)
    objComport.Output = Chr(5)
    'Küldendő szöveg:
    objComport.Output = fenyero + out + kifutas
    'Lezárás:
    objComport.Output = Chr(254)
    objComport.Output = Chr(lezaras)
    objComport.PortOpen = False

    Először a sima OpenTextFile-eljárással próbálkoztam, de az állandóan átállítja a soros portot 1200baud-ra, holott nekem 9600 kellene. MSCOMM32 nem működik, így marad a NetCommOCX verzió. Mást eljárást nem találtam.

    Esetleg valaki belefutott már ilyen problémákba? Van esetleg valamilyen tippetek?

    Előre is köszönöm.

Új hozzászólás Aktív témák