Hirdetés
Talpon vagyunk, köszönjük a sok biztatást! Ha segíteni szeretnél, boldogan ajánljuk Előfizetéseinket!
-
Mobilarena
Új hozzászólás Aktív témák
-
aviator
tag
Sziasztok,
Soros vonalon érkező adatot szeretnék excel táblázatban felhasználni ebben kérnék segítséget.
Mivel még sosem dolgoztam ilyennel, nem akartam feltalálni a spanyol viaszt, ide vezetett a google: http://www.thescarms.com/vbasic/commio.aspx
Ez egy elég jól használható modul, jönnek is szépen az adatok. Egy 10 karakteres stringet kell beolvasnom, a problémám az, hogy nem mindig van meg a 10 karakter, illetve néha több van, tehát bizonytalan az olvasás. A csatolt kódban a Do Loop-ban történik meg a string kivétele a soros bufferből, csak ezek szerint nem mindig a jó pillanatban. Próbáltam rákényszeríteni, hogy csak a 10 karakter hosszú olvasás esetén menjen tovább az első if-nél, megcsinálja, de néha sokáig tart, meg hát nem érzem túl elegánsnak.
Kellene ide egy olyan megoldás, ami kiküszöböli ezt a problémát, de ha valakinek van működő kódja teljesen más alapokon az is tökéletes lenne.Private Sub CommandButton1_Click()
Dim intPortID As Integer ' Ex. 1, 2, 3, 4 for COM1 - COM4
Dim lngStatus As Long
Dim strError As String
Dim strData As String
intPortID = 3 'Using COM3
' Initialize Communications
lngStatus = CommOpen(intPortID, "COM" & CStr(intPortID), _
"baud=9600 parity=N data=8 stop=1")
If lngStatus <> 0 Then
' Handle error.
lngStatus = CommGetError(strError)
MsgBox "COM Error: " & strError
End If
lngStatus = CommSetLine(intPortID, LINE_RTS, True)
lngStatus = CommSetLine(intPortID, LINE_DTR, True)
' Read maximum of 64 bytes from serial port.
Do
lngStatus = CommRead(intPortID, strData, 64)
If lngStatus > 0 And (Len(strData) = 10) Then
TextBox1.Text = strData
TextBox2.Text = Len(strData)
Exit Do
End If
If lngStatus < 0 Then
lngStatus = CommGetError(strError)
MsgBox "COM Error: " & strError
Exit Do
End If
Loop
lngStatus = CommSetLine(intPortID, LINE_RTS, False)
lngStatus = CommSetLine(intPortID, LINE_DTR, False)
' Close communications.
Call CommClose(intPortID)
End Sub
-
aviator
tag
Sziasztok,
Egy Win32-es projekt jelentős részét kellene átlátnom, megértenem, majd utána a saját igényeimnek megfelelően bővíteni. Jelenleg ott tartok a dologgal, hogy van egy exe fájlom, és megvan hozzá a forráskód. Az exe fájl szépen lefut ahogy kell, viszont ha a forráskódját beillesztem az editorba és megpróbálom futtatni, akkor elindul ugyan, de egy, a forráskódban definiált hibaüzenetet kapok. Visszafejtve arra jutottam, hogy a hibaüzenetet azért kapom mert nem tud lefutni a CreateFilemapping függvény.
A kódrészlet:
#define MAX_SIZE 0x7F00 // Largest data (kept below 32k to avoid
// any possible 16-bit sign problems)
// create the file-mapping object
m_hMap = CreateFileMapping(
(HANDLE)0xFFFFFFFF, // use system paging file
NULL, // security
PAGE_READWRITE, // protection
0, MAX_SIZE+256, // size
szName); // name
if ((m_hMap == 0) || (GetLastError() == ERROR_ALREADY_EXISTS))
{ *pdwResult = FSUIPC_ERR_MAP;
FSUIPC_Close();
return FALSE;
}
Az if-ben az első feltétel teljesül, tehát az m_hMap értéke marad a kezdeti nulla, azaz nem kap értéket a függvénytől, ezért íródik be az if-en belül a *pdwResult címre a hibaüzenet. Hiba nincs, a GetLastError() nullát ad vissza, ezt ellenőriztem.
Az egész kódrészlet egy másik függvény része, ezért van return FALSE a végén.A kérdés, hogy mi lehet az oka annak, hogy nem fut le a CreateFileMapping függvény?
Igazából most van dolgom először Win32-es programmal, a butaságok állításáért, kérdezéséért előre is elnézést.
Köszönöm a segítséget.
-
aviator
tag
válasz
dabadab #12406 üzenetére
Köszönöm a válaszokat.
"A kérdés az, hogy ennek mennyire kell különböznie egy tök sima billentyűzettől?"
A kívánt funkciók megvalósításának teszteléséhez valóban nem kell több egy billentyűzetnél, a "hardver" végső formájában azonban külső nyomógombokból állna.
Ha billentyűzetet belezek ki akkor jól sejtem, hogy a gombok billentyű leütéseknek (karaktereknek) fognak megfelelni? Nem lesz konfliktus a másik (már üzemben lévő) billentyűzettel, illetve azokkal a funkciókkal amik már hozzá vannak rendelve billentyűhöz?
A játékvezérlők, joystick-ok gamepad-ok hogy oldják meg ezt a kérdést?
-
aviator
tag
Sziasztok!
A kérdésem nem feltétlen szoftver, inkább hardverfejlesztéssel kapcsolatos ezért elnézést, ha rossz helyre írom.
A kérdés az lenne, hogy hogyan oldom meg azt, hogy egy PC-től teljesen független nyomógomb, vagy kapcsoló hatására a PC-n valami történjen. Addig eljutottam, hogy kell hozzá egy programozható eszköz (PIC, Arduino, stb) és végülis az fog a PC-vel kommunikálni, de azt nem tudom, hogy hogyan kellene megoldani magát a kommunikációt, illetve hogy ezt én Windows-ban hogyan fogom észlelni. Az a gyanúm, hogy egy programot kell majd írni ami Windows alatt fut és kommunikál az Arduinoval. Szóval ezt kéne tisztába tenni, mert úgy érzem ebben el vagyok veszve.
Nagyon röviden megfogalmazva szeretnék (majd idővel) létrehozni egy olyan sok gombos eszközt aminek a gombnyomásaira különböző funkciókat tudok tenni.
Segítségként tökéletes egy könyv, leírás, oktató video (sorozat), csak annyira alap amit szeretnék tudni, hogy nem tudok hogy rákeresni.
Köszönöm ha segítetek.
Új hozzászólás Aktív témák
● olvasd el a téma összefoglalót!
- HATALMAS AKCIÓK / MICROSOFT WINDOWS 10,11 / OFFICE 16,19,21,24 / VÍRUS,VPN VÉDELEM / SZÁMLA / 0-24
- LG 27GR83Q-B - 27" IPS / QHD 2K / 240Hz & 1ms / NVIDIA G-Sync / FreeSync / DisplayHDR 400
- AKCIÓ! Apple iPad Pro 13 2024 M4 512GB Cellular tablet garanciával hibátlan működéssel
- Xiaomi Redmi 9 32GB, Kártyafüggetlen, 1 Év Garanciával
- Tablet felvásárlás!! Apple iPad, iPad Mini, iPad Air, iPad Pro
Állásajánlatok
Cég: FOTC
Város: Budapest