Sida 1 av 2
Visual Basic & Binary
Postat: 13 november 2006, 17:19:52
av Mawrik
Håller på med ett program i V.B. Tankar upp data(2*8 bitar) via rs232 från en pic. Har tänkt annvänt en matris med maskade text.box för att skriva ett nummer (8 bitar). Men det som kommer från pic-en är binära nummer. För att hitta rätt textbox måste den heta lika som det nummer som kommer från pic-en. Har provat &h (hex) men det funkar inte (Property value is not valid). Eller är jag ute i dimman. Brukar Visual Basic 2005(senaste).
Maw...
Postat: 13 november 2006, 17:43:16
av sodjan
Du får två värden, det ena är "namnet" på den textbox där det andra värdet ska skrivas ut ?
Vilka intervall har de två värderna ? Eller är det 256 olika textboxar ?
Det finns sätt att kombinera objekt och ge dom olika index (som bör vara numeriskt).
Hur ser koden ut som tar emot värderna och hur är variablerna definierade ?
Sen finns det flera olika funktioner för konv melan ascii och olika num format.
Generelt sätt är det bättre att visa den faktiska koden än att försöka
beskriva vad man har gjort.
> Men det som kommer från pic-en är binära nummer.
Mja, det är det ju *alltid*. Sen kan *vissa* binära nummer representera
olika "ASCII tecken" och kan då kallas "text".

Men de är i princip fortfarande binära...
kod
Postat: 13 november 2006, 18:29:50
av Mawrik
Pic läser tid i 16-bit.Sänder 2*8bit till pc.Lagra dessa som byte (Ti_H å Ti_L).
Använder: array.Find(nummer på cell,matrisnamn)
Vill inte använda en databas utan en enkel matris med ca:300 celler
Maw...
Postat: 13 november 2006, 19:14:48
av sodjan
Vilket är det ?
Textboxar eller en matris ??
Jag har läst hjälpen till Array.Find men förstår inte vad du gör.
"Använder: array.Find(nummer på cell,matrisnamn)" stämmer inte
överens med hjälpen för Array.Find...
Dags att komma ut ur dimman och förklara vad du gör...

Matris
Postat: 13 november 2006, 19:46:22
av Mawrik
Eftersom jag vill ha 300 celler. 1 cell = en textbox. 300 celler = en matris. .Varför text.box därför att jag vill skriva in en siffra 0-100 som jag vill skicka till pic-en .Array.Find letar upp rätt cell.
Maw...
Postat: 13 november 2006, 20:02:16
av sodjan
Nyss skulle du *läsa* data, nu ska du *skriva* data...
> Array.Find letar upp rätt cell.
Jo, men i hjälpen till VB ser inte argumenten ut så som du beskriver det.
Men skit samma, jag hoppar av tråden...
Lycka till !
Postat: 13 november 2006, 20:20:38
av Mawrik
Sodjan: läsa å skriva data????
Jo men frågan var om å döpa en textbox.
Men men, håller på å kollar om det inte löser sig.
Maw...
Postat: 13 november 2006, 20:33:16
av sodjan
Ah, så problemet är inte i sig att du får binära värden, utan att du
vill ge textboxarna "binära" namn, om man säger så. Ja ja...
Posta gärna din lösning, det är alltid kul att se vad som
hände med det man har varit och "petat" i...

Cod
Postat: 13 november 2006, 21:25:39
av Mawrik
Sodjan: varit med å petat i??????????
Dim Matris (0 to 65536) as integer
Matris(3478) = MaskedTextBox.Mask
Array.Find(3478,Matris)
Förstår du nu hur array.find fungerar
MVH Mawrik
Postat: 13 november 2006, 21:41:34
av sodjan
> Förstår du nu hur array.find fungerar
Nej.
Dokumentationen säger "Array.Find(array, match)"
Så jag skulle förvänta mig "Matris" som första parameter, inte "3478"...
Skit samma, fungerar det för dig så är det väl bra !
Jag får "uppgradera" från VB6 till VB2005 någon annan gång.

cod
Postat: 13 november 2006, 22:04:26
av Mawrik
Kan nog vara fel men tänkte du skulle förstå hur det fungerade.
MVH Mawrik
Postat: 13 november 2006, 22:19:06
av sodjan
> Kan nog vara fel...
Vad kan vara fel ?
Postat: 14 november 2006, 00:01:56
av anlamotte
hmm.. Jag förstår absolut ingenting av vad du försöker göra.
Du får alltså 2 värden från din PIC. Det första värdet motsvarar vilken
textbox som den andra värdet ska hamna i...right?
Sen använder du
MaskedTextBox.Mask styr vilka godkända tecken användaren
kan skriva in i textboxen. Varför villl du spara denna mask i matrisen??
Sedan kommer vi till
Funktionen Array.Find(array, match) söker igenom en matris och lämnar
index tillbaka på hittat element t.ex
Kod: Markera allt
Dim Matris(10) As String, Index as Integer
Matris(1) = "japp"
Matris(2) = "ok"
Matris(3) = "blabla"
Matris(4) = "fulukorv"
index = Array.Find(Matris, "blabla")
Index skulle här bli 4:a alltså
Om du nu vill använda 300 textboxer är nog det enklasta ett placera dessa textboxar i en matris.
Sedan räcker det med att du tar emot det första värdet, kontrollerar att
det är ok och placerar det i rätt textbox något sånt här:
Kod: Markera allt
Dim tIndex as Integer
Dim tValue as Integer
Do
DoEvents
Loop Until MsComm1.InputLen > 0
tIndex = Asc(MsComm1.Input)
Do
DoEvents
Loop Until MsComm1.InputLen > 0
tValue = Asc(MsComm1.Input)
Text1(tIndex).Text = CStr(tValue)
Nu skulle jag nog inte rekommendera att använda 300 textboxar.. Bättre måste vara att använda någon typ av ListControl eller göra ett VBA Makro i EXCEL!
Postat: 14 november 2006, 11:22:58
av sodjan
Tack anlamotte, ungefär vad jag menade, men orkade inte skriva lika mycket...

Tack alamotte
Postat: 14 november 2006, 22:13:59
av Mawrik
Precis!!
Hm! Låser textboxen för nummer genom mask.
Vill inte använda exel.
Tackar!!
Maw...