Ja, jij wel maar ik nie.....
Wellicht dat je tijdens het uitlezen van de P1 poort via D2 kan checken of er data doorkomt. Zo nee doe een timeout van 5 seconden en schrijf dan pas de file weg. Wacht dan weer of er data doorkomt en schrijf pas als er data is doorgekomen en 5 seconden geen data meer doorkomt. Op die wijze heb je altijd complete berichten.
Kan dat binnen het .Net Microframework?
Kan dat binnen het .Net Microframework?
Vroeger was alles beter... Geniet dan maar van vandaag, morgen is alles nog slechter!
Is er nog behoefte aan de files op mijn SD kaartje?
Tuurlijk, dan kan ik zien of het software of hardware matig kan worden opgelost.hansdegit schreef op woensdag 03 oktober 2012 @ 15:47:
Is er nog behoefte aan de files op mijn SD kaartje?
dubbel
[Voor 98% gewijzigd door hansdegit op 03-10-2012 17:22]
Heel apart...In de F:\06(Jun)-2011 directory ont-zet-tend veel files, waarin het volgende staat (uiteraard verandert de tijd wel steeds):
Dan heeft het niet zoveel zin om die verzameling aan je op te sturen toch?
Heb ik iets verkeerd gedaan?
edit: Firmware van te voren op 4.2.0.1 gebracht.
code:
1
2
| Time of Logging : 06/01/2011 00:54:33 System.Byte[] |
Dan heeft het niet zoveel zin om die verzameling aan je op te sturen toch?
Heb ik iets verkeerd gedaan?
edit: Firmware van te voren op 4.2.0.1 gebracht.
[Voor 7% gewijzigd door hansdegit op 03-10-2012 17:24]
Inderdaad. Datzelfde probleem had ik ook al, en JoopC heeft deze bestanden al.hansdegit schreef op woensdag 03 oktober 2012 @ 17:22:
Heel apart...In de F:\06(Jun)-2011 directory ont-zet-tend veel files, waarin het volgende staat (uiteraard verandert de tijd wel steeds):
code:
1 2 Time of Logging : 06/01/2011 00:54:33 System.Byte[]
Dan heeft het niet zoveel zin om die verzameling aan je op te sturen toch?
Denk het nietHeb ik iets verkeerd gedaan?

Ik ook. Dat had ik vorige week al gedaan.edit: Firmware van te voren op 4.2.0.1 gebracht.
Vroeger was alles beter... Geniet dan maar van vandaag, morgen is alles nog slechter!
Hans en c700,hansdegit schreef op woensdag 03 oktober 2012 @ 17:22:
Heel apart...In de F:\06(Jun)-2011 directory ont-zet-tend veel files, waarin het volgende staat (uiteraard verandert de tijd wel steeds):
code:
1 2 Time of Logging : 06/01/2011 00:54:33 System.Byte[]
Dan heeft het niet zoveel zin om die verzameling aan je op te sturen toch?
Heb ik iets verkeerd gedaan?
edit: Firmware van te voren op 4.2.0.1 gebracht.
Ik zal nieuwe code schrijven, omdat jullie 2 het zelfde probleem hebben heeft het niets te maken met inter-ferentie, storing op je kabeltje zeg maar.
En ja Hans, ik ben wel geinteresseerd in je bestandjes, ik denk dat ik het en-coderen mysterie heb opgelost.
Zal wachten met programmeren tot ik de bestandjes heb.
Hé, wacht ff ....zit net te denken dat jij een andere versie heb dan C700, hij krijgt ze direkt per email, dat lijntje is korter en gaat sneler.
Hans, als je nog verder wil testen, wil jij even je sd kaartje leegmaken en deze regel veranderen:
bovenin je progje:
Imports System.Text
Onder deze regel:
spSerialPort.Read(bBuffer, 0, bBuffer.Length)
Deze regel toevoegen:
spSerialPort.Flush()
de methode Flush() is ongedocumenteerd in MSDN dus ik weet niet waarin het resulteert, zal wel de leesbuffer geheel leeg maken in SerialPort neem ik aan.
en deze lijn veranderen:
writer.writeline(buffer.......
in:
writer.WriteLine(Encoding.UTF8.GetChars(bBuffer, 0, bBytesToRead - 1))
of deze:
writer.Write(writer.Encoding.GetChars(bBuffer))
en dan je N+ ff een paar minuutjes wil laten draaien.
En dat je halve bestandjes krijgt komt omdat ik de buffer te klein heb gehouden.
Ik hoor het wel.
[Voor 10% gewijzigd door Willie Wortel op 04-10-2012 10:35]
bBytesToRead is een variabele in een andere subroutine dan waar de WriteLn staat.
Dus nu weet ik het ff niet. Heb je een "nieuwe"versie van je source die ik kan knippen en plakken?
edit: 'k zie nu jouw edit. Ik ga even bestandjes uitspugen.
Dus nu weet ik het ff niet. Heb je een "nieuwe"versie van je source die ik kan knippen en plakken?
edit: 'k zie nu jouw edit. Ik ga even bestandjes uitspugen.
[Voor 14% gewijzigd door hansdegit op 04-10-2012 10:53]
Hans, C700 kan je niet een manier verzinnen waar we de bestanden neer kunnen zetten zodat we allen (public) kunnen downloaden. Dit werkt niet echt.hansdegit schreef op donderdag 04 oktober 2012 @ 10:52:
bBytesToRead is een variabele in een andere subroutine dan waar de WriteLn staat.
Dus nu weet ik het ff niet. Heb je een "nieuwe"versie van je source die ik kan knippen en plakken?
edit: 'k zie nu jouw edit. Ik ga even bestandjes uitspugen.
Die wijken wel erg af van C700, hij heeft deze gestuurd:
ime of Logging : 06/01/2011 00:43:32
/ISk5\2MT382-1003
0-0:96.1.1(5A424556303035303639343233343131)
1-0:1.8.1(01035.280*kWh)
1-0:1.8.2(00580.009*kWh)
1-0:2.8.1(00181.088*kWh)
1-0:2.8.2(00419.555*kWh)
0-0:96.14.0(0002)
1-0:1.7.0(0000.37*kW)
1-0:2.7.0(0000.00*kW)
0-0:17.0.0(0999.00*kW)
0-0:96.3.10(1)
0-0:96.13.1()
0-0:96.13.0()
0-1:24.1.0(3)
0-1:96.1.0(3238303131303031323031313038323132)
0-1:24.3.0(121003140000)(00)(60)(1)(0-1:24.2.1)(m3)
(00087.585)
0-1:24.4.0(1)
!
ime of Logging : 06/01/2011 00:43:32
/ISk5\2MT382-1003
0-0:96.1.1(5A424556303035303639343233343131)
1-0:1.8.1(01035.280*kWh)
1-0:1.8.2(00580.009*kWh)
1-0:2.8.1(00181.088*kWh)
1-0:2.8.2(00419.555*kWh)
0-0:96.14.0(0002)
1-0:1.7.0(0000.37*kW)
1-0:2.7.0(0000.00*kW)
0-0:17.0.0(0999.00*kW)
0-0:96.3.10(1)
0-0:96.13.1()
0-0:96.13.0()
0-1:24.1.0(3)
0-1:96.1.0(3238303131303031323031313038323132)
0-1:24.3.0(121003140000)(00)(60)(1)(0-1:24.2.1)(m3)
(00087.585)
0-1:24.4.0(1)
!
de tweede.
Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
| Imports Microsoft.SPOT Imports Microsoft.SPOT.Hardware Imports SecretLabs.NETMF.Hardware Imports SecretLabs.NETMF.Hardware.NetduinoPlus Imports System.IO Imports System.Text Imports System.IO.Ports Namespace HansP1PoortListner Public Class SerialPortP1 Shared spSerialPort As SerialPort Shared OnboardLed As New OutputPort(Pins.ONBOARD_LED, False) Shared intFileCounter As Integer = 0 Public Shared Sub Main() spSerialPort = New SerialPort(SerialPorts.COM2, 9600, Parity.Even, 7, StopBits.One) AddHandler spSerialPort.DataReceived, New SerialDataReceivedEventHandler(AddressOf Serial_DataReceived) spSerialPort.Open() 'forever sleep, for testing purpose only. Thread.Sleep(Timeout.Infinite) End Sub Private Shared Sub Serial_DataReceived(ByVal sender As Object, ByVal e As SerialDataReceivedEventArgs) Dim bBytesToRead As Integer = spSerialPort.BytesToRead If bBytesToRead > 0 Then Dim bBuffer As Byte() = New Byte(bBytesToRead - 1) {} spSerialPort.Read(bBuffer, 0, bBuffer.Length) Dim blnLedOnOff As Boolean = True For t = 0 To bBytesToRead - 1 Debug.Print(bBuffer(t).ToString) OnboardLed.Write(blnLedOnOff) blnLedOnOff = Not blnLedOnOff Thread.Sleep(10) Next P1FileLogger(bBuffer) End If OnboardLed.Write(False) End Sub Private Shared Sub P1FileLogger(ByVal bBuffer As Byte()) Dim strPath As String = Nothing Dim strFileName As String = Nothing strPath = "\SD\" & DateTime.Now.ToString("MM(MMM)-yyyy") strFileName = strPath & "\" & DateTime.Now.ToString("dd-MM(MMM)-yyyy-") & intFileCounter.ToString & ".log" If Not File.Exists(strFileName) Then If Not Directory.Exists(strPath) Then Directory.CreateDirectory(strPath) End If End If Using writer As New StreamWriter(strFileName, True) writer.WriteLine("Time of Logging : " & DateTime.Now) writer.Write(writer.Encoding.GetChars(bBuffer)) End Using intFileCounter += 1 End Sub End Class End Namespace |
[Voor 99% gewijzigd door hansdegit op 04-10-2012 12:17]
Ja, dan heb je een andere versie:
deze regel:
writer.WriteLine(Encoding.UTF8.GetChars(bBuffer))
voor deze regel:
writer.Write(writer.Encoding.GetChars(bBuffer))
deze regel:
writer.WriteLine(Encoding.UTF8.GetChars(bBuffer))
voor deze regel:
writer.Write(writer.Encoding.GetChars(bBuffer))
Mooi, dan gaan we die even een tijdje data laten verzamelen tijdens de lunch.
edit: zo, dat smaakt. Files uploaded.
edit: zo, dat smaakt. Files uploaded.
[Voor 21% gewijzigd door hansdegit op 04-10-2012 13:18]
knip
[Voor 71% gewijzigd door hansdegit op 04-10-2012 13:18]
Dan gebruikt C700 toch wat anders of hij heeft een ander type meter.
Maar eens even afwachten wat hij te melden heeft.
Maar eens even afwachten wat hij te melden heeft.
In de tussentijd:
Hoe zou mijn code er exact uit moeten zien? Met alle liefde draai ik nog een rondje.
Edit: kan het zijn dat mijn berichten korter zijn doordat ik 3.3v gebruik?
Hoe zou mijn code er exact uit moeten zien? Met alle liefde draai ik nog een rondje.
Edit: kan het zijn dat mijn berichten korter zijn doordat ik 3.3v gebruik?
[Voor 26% gewijzigd door hansdegit op 04-10-2012 13:49]
Nou Hans, ik moet die bytes bewerken op binair voordat deze worden weggeschreven.
Dat de bestandjes een onregelmatige grootte hebben komt omdat er in de ontvangen bytes EOF markers staan, als deze niet worden bewerkt begrijp je wel wat er gebeurd.
Wel is er consistentie in je ontvangen bytes.
Waarom C700 wel de juiste output heeft weet ik niet, of 5v uitmaakt weet ik niet. Dat blijft allemaal proberen.
In de tussentijd heb ik wel de code voor de webserver vervolmaakt.
De rest van de code die we moeten hebben heb ik al geschreven, dat is knip en plak werk.
Dat de bestandjes een onregelmatige grootte hebben komt omdat er in de ontvangen bytes EOF markers staan, als deze niet worden bewerkt begrijp je wel wat er gebeurd.
Wel is er consistentie in je ontvangen bytes.
Waarom C700 wel de juiste output heeft weet ik niet, of 5v uitmaakt weet ik niet. Dat blijft allemaal proberen.
In de tussentijd heb ik wel de code voor de webserver vervolmaakt.
De rest van de code die we moeten hebben heb ik al geschreven, dat is knip en plak werk.
Logisch natuurlijk.
Hoe was die bewerking ook alweer? 7 posities naar links?
Lijkt me leuk om nu al te zien wat de meter allemaal uitspuugt.
Hoe was die bewerking ook alweer? 7 posities naar links?
Lijkt me leuk om nu al te zien wat de meter allemaal uitspuugt.
Vandaag wegens werk niets kunnen doen, maar vanavond en morgen kan ik wel af en toe tussendoor wat proberen.JoopC schreef op donderdag 04 oktober 2012 @ 14:08:
Nou Hans, ik moet die bytes bewerken op binair voordat deze worden weggeschreven.
Dat de bestandjes een onregelmatige grootte hebben komt omdat er in de ontvangen bytes EOF markers staan, als deze niet worden bewerkt begrijp je wel wat er gebeurd.
Wel is er consistentie in je ontvangen bytes.
Waarom C700 wel de juiste output heeft weet ik niet, of 5v uitmaakt weet ik niet. Dat blijft allemaal proberen.
Ik heb niet de juiste output uit de Netduino. Bij mij werkt de Netduino code tot nu toe ook niet correct.
De files met de juiste/alle informatie haal ik via een tweede aansluiting via een FTDI kabel uit de P1 poort.
Ik heb dus een splitter die het signaal van de P1 poort van de slimme meter naar een Smile P1, de Energq Gateway, de Netduino en de FTDI kabel splitst.
Alle devices behalve de Netduino geven de juiste informatie door. Dat ligt dus nog aan de code of de opbouw van de code.
Als je weer een nieuwe code om te testen naar me stuurt, of deze via de Skydrive shared (uitnodiging heb ik naar je gestuurd JoopC) dan kunnen we makkelijk daar de data plaatsten. Hans, als jij even naar mij mailt dan zal ik jou ook toegang geven. Er komt een DM aan met mijn e-mailadres.In de tussentijd heb ik wel de code voor de webserver vervolmaakt.
De rest van de code die we moeten hebben heb ik al geschreven, dat is knip en plak werk.
[Voor 3% gewijzigd door Gé Brander op 04-10-2012 20:46]
Vroeger was alles beter... Geniet dan maar van vandaag, morgen is alles nog slechter!
Hmm, uitdagend. De eerste read geeft bij mij 3 characters uit de buffer. En guess what, het laatste character is dan een EOF (ascii 04). Als je 04 XOR 127 doet, kom je op de ASCII code voor hoofdletter S uit. Laat dat nu net het 3e karakter uit de reeks van c70070540 te zijn.
Da's een beetje verneukeratief. Want het event SerialDataReceived vuurt ook als er een EOF verstuurd wordt. Terwijl dat natuurlijk gewoon een 'S' had moeten zijn.
Het verontrustende is dat ik op het netduino forum alleen maar hardwarematige oplossingen tegenkom. Ik hoop echt dat JoopC ons kan geruststellen.
Da's een beetje verneukeratief. Want het event SerialDataReceived vuurt ook als er een EOF verstuurd wordt. Terwijl dat natuurlijk gewoon een 'S' had moeten zijn.
Het verontrustende is dat ik op het netduino forum alleen maar hardwarematige oplossingen tegenkom. Ik hoop echt dat JoopC ons kan geruststellen.
Ik heb de 74LS04p ertussen gemonteerd. Heb je een stukje code die ik kan testen? Dan kunnen we vergelijken.hansdegit schreef op vrijdag 05 oktober 2012 @ 23:29:
Hmm, uitdagend. De eerste read geeft bij mij 3 characters uit de buffer. En guess what, het laatste character is dan een EOF (ascii 04). Als je 04 XOR 127 doet, kom je op de ASCII code voor hoofdletter S uit. Laat dat nu net het 3e karakter uit de reeks van c70070540 te zijn.
Da's een beetje verneukeratief. Want het event SerialDataReceived vuurt ook als er een EOF verstuurd wordt. Terwijl dat natuurlijk gewoon een 'S' had moeten zijn.
Het verontrustende is dat ik op het netduino forum alleen maar hardwarematige oplossingen tegenkom. Ik hoop echt dat JoopC ons kan geruststellen.
Vroeger was alles beter... Geniet dan maar van vandaag, morgen is alles nog slechter!
Ik heb geen code, alleen nog maar ideeën. Ben even aan het stoeien met mijn (oude) kennis over parity etc.
Volgens mij is het zaak om byte voor byte die spullen in te lezen en niet buffergewijs. Want einde buffer (EOF) betekent niet einde transmissie.
Dan komt nu mijn VB handicap boven; ik moet me echt goed verdiepen in die SerialPort methods.
Volgens mij is het zaak om byte voor byte die spullen in te lezen en niet buffergewijs. Want einde buffer (EOF) betekent niet einde transmissie.
Dan komt nu mijn VB handicap boven; ik moet me echt goed verdiepen in die SerialPort methods.
Hé, je leeft nog! Enlighten us.
[Voor 3% gewijzigd door hansdegit op 06-10-2012 12:06]
De bytes worden alleen geïnterpreteerd als deze ge-encodeerd worden. De ingelezen buffer zal wel de juiste lengte hebben. De in de buffer aanwezige bytes zijn de originele door P1 verzonden bytes en hebben de waarde van 0 tot 255. Dus een waarde in een buffer byte zal GEEN invloed hebben op het inlezen.
Maar als je deze verstuurd naar een file of op het scherm weergeeft dan veranderd de betekenis van de byte.
Dit is vastgelegd in afspraken, vast wel eens gehoord van ASCii etc....
Het vertalen van de byte gebeurd oa in de class methode .TOSTRING
De juiste buffer lengte (ontvangen bytes) kan je weergeven door:
debug.print(bBuffer.length.tostring)
of in je bestandje
writer.WriteLine("Original Length: " & bBuffer.length.tostring))
Je zal dan zien dat de lengte afwijkt van de file lengte.
hier wat je zelf had uitgevonden met xor, ga een beetje oefenen met invoer.
For t = 0 To bBuffer.Length - 1
bBuffer(t) = CByte((bBuffer(t) Xor 127))
Debug.Print(bBuffer(t).ToString)
Debug.Print(Strings.ChrW(bBuffer(t)))
Next
doe deze loop voordat je iets weggschijft.
enjoy.
Ik had al lang wat geschreven maar kan moeilijk iets programmeren wat ik niet heb.
maar komt goed, nog een paar nachtjes slapen.
Maar als je deze verstuurd naar een file of op het scherm weergeeft dan veranderd de betekenis van de byte.
Dit is vastgelegd in afspraken, vast wel eens gehoord van ASCii etc....
Het vertalen van de byte gebeurd oa in de class methode .TOSTRING
De juiste buffer lengte (ontvangen bytes) kan je weergeven door:
debug.print(bBuffer.length.tostring)
of in je bestandje
writer.WriteLine("Original Length: " & bBuffer.length.tostring))
Je zal dan zien dat de lengte afwijkt van de file lengte.
hier wat je zelf had uitgevonden met xor, ga een beetje oefenen met invoer.

For t = 0 To bBuffer.Length - 1
bBuffer(t) = CByte((bBuffer(t) Xor 127))
Debug.Print(bBuffer(t).ToString)
Debug.Print(Strings.ChrW(bBuffer(t)))
Next
doe deze loop voordat je iets weggschijft.
enjoy.
Ik had al lang wat geschreven maar kan moeilijk iets programmeren wat ik niet heb.
maar komt goed, nog een paar nachtjes slapen.
addendum: als je instellingen van serialcom bv pariteit of baudrate niet goed staan krijg je ook krep in je buffer.
Thx, tegenwoordig slaap ik weer prima hoor met 2 naproxennetjes.
http://stackoverflow.com/...atareceived-event-to-fire
Vooralsnog doet die xor 127 nog niet wat ik wil. Ik krijg characters > 128, dus ergens komt er crap in de buffer.
Vooralsnog doet die xor 127 nog niet wat ik wil. Ik krijg characters > 128, dus ergens komt er crap in de buffer.
Nog steeds een zeer levendige discussie over pros en cons van sluwe meters op blog van Maarten de Wit, met zeer interessante inside informatie. Vast ook wel interessant voor volgers van dit topic:
http://maartendewit66.wor...slimme-meter-domme-kracht
http://maartendewit66.wor...slimme-meter-domme-kracht
Sag nicht: "Ich habe die Wahrheit gefunden", sondern: "Ich habe eine Wahrheit gefunden" (Kahlil Gibran, 1883 - 1931)
Dank voor de link. Maar laten we aub de discussie niet hier voeren.zonnigtype schreef op zaterdag 06 oktober 2012 @ 15:02:
Nog steeds een zeer levendige discussie over pros en cons van sluwe meters op blog van Maarten de Wit, met zeer interessante inside informatie. Vast ook wel interessant voor volgers van dit topic:
http://maartendewit66.wor...slimme-meter-domme-kracht

Vroeger was alles beter... Geniet dan maar van vandaag, morgen is alles nog slechter!
Nieuw probeersel.
Met deze krijgen we in ieder geval consistentie in de berichten.
De bedoeling:
een "grote boodschap" begint altijd met '40'. Deze code componeert zo'n grote boodschap alvorens 'em naar SD weg te schrijven. Nu nog de juiste decodeersleutel vinden.
Met deze krijgen we in ieder geval consistentie in de berichten.
Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
| Imports Microsoft.SPOT Imports Microsoft.SPOT.Hardware Imports SecretLabs.NETMF.Hardware Imports SecretLabs.NETMF.Hardware.NetduinoPlus Imports System.IO Imports System.Text Imports System.IO.Ports Namespace HansP1PoortListner Public Class SerialPortP1 Shared spSerialPort As SerialPort Shared OnboardLed As New OutputPort(Pins.ONBOARD_LED, False) Shared intFileCounter As Integer = 0 Shared Message As Byte() = New Byte(4096) {} Shared MessageLen As Integer = 0 Public Shared Sub Main() spSerialPort = New SerialPort(SerialPorts.COM2, 9600, Parity.Even, 7, StopBits.One) AddHandler spSerialPort.DataReceived, New SerialDataReceivedEventHandler(AddressOf Serial_DataReceived) spSerialPort.Open() 'forever sleep, for testing purpose only. Thread.Sleep(Timeout.Infinite) End Sub Private Shared Sub Serial_DataReceived(ByVal sender As Object, ByVal e As SerialDataReceivedEventArgs) Dim bBytesToRead As Integer = spSerialPort.BytesToRead Dim bBuffer As Byte() = New Byte(bBytesToRead - 1) {} OnboardLed.Write(True) If bBytesToRead > 0 Then spSerialPort.Read(bBuffer, 0, bBuffer.Length) For t = 0 To bBytesToRead - 1 Message(MessageLen) = CByte((bBuffer(t) Xor 127)) MessageLen += 1 If bBuffer(t) = 40 Then 'EOT, new message starts here P1FileLogger(Message) Debug.Print(Encoding.UTF8.GetChars(Message)) Message = New Byte(4096) {} MessageLen = 0 End If 'Debug.Print(bBuffer(t).ToString) Next End If OnboardLed.Write(False) End Sub Private Shared Sub P1FileLogger(ByVal bBuffer As Byte()) Dim strPath As String = Nothing Dim strFileName As String = Nothing strPath = "\SD\" & DateTime.Now.ToString("MM(MMM)-yyyy") strFileName = strPath & "\" & DateTime.Now.ToString("dd-MM(MMM)-yyyy-") & intFileCounter.ToString & ".log" If Not File.Exists(strFileName) Then If Not Directory.Exists(strPath) Then Directory.CreateDirectory(strPath) End If End If Using writer As New StreamWriter(strFileName, True) writer.WriteLine("Time of Logging : " & DateTime.Now) writer.WriteLine(Encoding.UTF8.GetChars(bBuffer)) End Using intFileCounter += 1 End Sub End Class End Namespace |
De bedoeling:
een "grote boodschap" begint altijd met '40'. Deze code componeert zo'n grote boodschap alvorens 'em naar SD weg te schrijven. Nu nog de juiste decodeersleutel vinden.
Top, ik ga hem testen 
Ik heb hem geplaatst in https://skydrive.live.com...=66A1B30928B97B4F%2129344
Dit is wat ik in mijn intermediate window te zien krijg:
En er wordt niets naar de SD kaart geschreven.
Wacht even. Ik krijg wel volledige berichten binnen in de intermediate window, bovenstaande vertaald naar:
Het lijkt erop dat er een fout zit in de code van het schrijven naar de SD kaart.
De fout treedt op in deze regel

Ik heb hem geplaatst in https://skydrive.live.com...=66A1B30928B97B4F%2129344
Dit is wat ik in mijn intermediate window te zien krijg:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
| 47 73 83 107 53 92 50 77 84 51 56 50 45 49 48 48 51 13 10 13 10 48 45 48 58 57 54 46 49 46 49 40 53 65 52 50 52 53 53 54 51 48 51 48 51 53 51 48 51 54 51 57 51 52 51 50 51 51 51 52 51 49 51 49 41 13 10 49 45 48 58 49 46 56 46 49 40 48 49 48 53 49 46 55 56 54 42 107 87 104 41 13 10 49 45 48 58 49 46 56 46 50 40 48 48 53 57 54 46 48 49 50 42 107 87 104 41 13 10 49 45 48 58 50 46 56 46 49 40 48 48 49 56 50 46 56 56 48 42 107 87 104 41 13 10 49 45 48 58 50 46 56 46 50 40 48 48 52 50 50 46 51 57 51 42 107 87 104 41 13 10 48 45 48 58 57 54 46 49 52 46 48 40 48 48 48 49 41 13 10 49 45 48 58 49 46 55 46 48 40 48 48 48 48 46 54 49 42 107 87 41 13 10 49 45 48 58 50 46 55 46 48 40 48 48 48 48 46 48 48 42 107 87 41 13 10 48 45 48 58 49 55 46 48 46 48 40 48 57 57 57 46 48 48 42 107 87 41 13 10 48 45 48 58 57 54 46 51 46 49 48 40 49 41 13 10 48 45 48 58 57 54 46 49 51 46 49 40 41 13 10 48 45 48 58 57 54 46 49 51 46 48 40 41 13 10 48 45 49 58 50 52 46 49 46 48 40 51 41 13 10 48 45 49 58 57 54 46 49 46 48 40 51 50 51 56 51 48 51 49 51 49 51 48 51 48 51 49 51 50 51 48 51 49 51 49 51 48 51 56 51 50 51 49 51 50 41 13 10 48 45 49 58 50 52 46 51 46 48 40 49 50 49 48 48 54 49 57 48 48 48 48 41 40 48 48 41 40 54 48 41 40 49 41 40 48 45 49 58 50 52 46 50 46 49 41 40 109 51 41 13 10 40 48 48 48 57 54 46 56 57 56 41 13 10 48 45 49 58 50 52 46 52 46 48 40 49 41 13 10 33 13 10 A first chance exception of type 'System.NotSupportedException' occurred in Microsoft.SPOT.IO.dll A first chance exception of type 'System.NotSupportedException' occurred in Microsoft.SPOT.IO.dll A first chance exception of type 'System.NotSupportedException' occurred in Microsoft.SPOT.IO.dll Uncaught exception |
En er wordt niets naar de SD kaart geschreven.
Wacht even. Ik krijg wel volledige berichten binnen in de intermediate window, bovenstaande vertaald naar:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| /ISk5\2MT382-1003 0-0:96.1.1(5A424556303035303639343233343131) 1-0:1.8.1(01051.786*kWh) 1-0:1.8.2(00596.012*kWh) 1-0:2.8.1(00182.880*kWh) 1-0:2.8.2(00422.393*kWh) 0-0:96.14.0(0001) 1-0:1.7.0(0000.61*kW) 1-0:2.7.0(0000.00*kW) 0-0:17.0.0(0999.00*kW) 0-0:96.3.10(1) 0-0:96.13.1() 0-0:96.13.0() 0-1:24.1.0(3) 0-1:96.1.0(3238303131303031323031313038323132) 0-1:24.3.0(121006190000)(00)(60)(1)(0-1:24.2.1)(m3) (00096.898) 0-1:24.4.0(1) ! |
Het lijkt erop dat er een fout zit in de code van het schrijven naar de SD kaart.
De fout treedt op in deze regel
code:
1
| Directory.CreateDirectory(strPath) |
[Voor 132% gewijzigd door Gé Brander op 06-10-2012 19:57]
Vroeger was alles beter... Geniet dan maar van vandaag, morgen is alles nog slechter!
c700, hoe kom je nu aan dat telegram. De numerieke output in je debug window is de juiste. Heb je een kabeltje gebruikt of wat anders. Ik kom er op deze manier niet uit als er 2 verschillende systemen worden gebruikt tussen jou en Hans. (wel kabeltje/geen kabeltje..... weet ik veel)
Ok, nogmaals mijn situatie:JoopC schreef op zaterdag 06 oktober 2012 @ 20:18:
c700, hoe kom je nu aan dat telegram. De numerieke output in je debug window is de juiste. Heb je een kabeltje gebruikt of wat anders. Ik kom er op deze manier niet uit als er 2 verschillende systemen worden gebruikt tussen jou en Hans. (wel kabeltje/geen kabeltje..... weet ik veel)
P1 poort - kabel naar breakout board met 7404 voor inversie data signaal - Netduino
Code voor de Netduino: (bron deze post van Hans)
Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
| Imports Microsoft.SPOT Imports Microsoft.SPOT.Hardware Imports SecretLabs.NETMF.Hardware Imports SecretLabs.NETMF.Hardware.NetduinoPlus Imports System.IO Imports System.Text Imports System.IO.Ports Namespace HansP1PoortListner Public Class SerialPortP1 Shared spSerialPort As SerialPort Shared OnboardLed As New OutputPort(Pins.ONBOARD_LED, False) Shared intFileCounter As Integer = 0 Public Shared Sub Main() spSerialPort = New SerialPort(SerialPorts.COM2, 9600, Parity.Even, 7, StopBits.One) AddHandler spSerialPort.DataReceived, New SerialDataReceivedEventHandler(AddressOf Serial_DataReceived) spSerialPort.Open() 'forever sleep, for testing purpose only. Thread.Sleep(Timeout.Infinite) End Sub Private Shared Sub Serial_DataReceived(ByVal sender As Object, ByVal e As SerialDataReceivedEventArgs) Dim bBytesToRead As Integer = spSerialPort.BytesToRead If bBytesToRead > 0 Then Dim bBuffer As Byte() = New Byte(bBytesToRead - 1) {} spSerialPort.Read(bBuffer, 0, bBuffer.Length) Dim blnLedOnOff As Boolean = True For t = 0 To bBytesToRead - 1 Debug.Print(bBuffer(t).ToString) OnboardLed.Write(blnLedOnOff) blnLedOnOff = Not blnLedOnOff Thread.Sleep(10) Next P1FileLogger(bBuffer) End If OnboardLed.Write(False) End Sub Private Shared Sub P1FileLogger(ByVal bBuffer As Byte()) Dim strPath As String = Nothing Dim strFileName As String = Nothing strPath = "\SD\" & DateTime.Now.ToString("MM(MMM)-yyyy") strFileName = strPath & "\" & DateTime.Now.ToString("dd-MM(MMM)-yyyy-") & intFileCounter.ToString & ".log" If Not File.Exists(strFileName) Then If Not Directory.Exists(strPath) Then Directory.CreateDirectory(strPath) End If End If Using writer As New StreamWriter(strFileName, True) writer.WriteLine("Time of Logging : " & DateTime.Now) writer.Write(writer.Encoding.GetChars(bBuffer)) End Using intFileCounter += 1 End Sub End Class End Namespace |
De code die ik uit het venster van Visual Studio krijg (ASCII codes)
code:
zet ik om via de volgende website om te controleren wat de code is: http://home.paulschou.net/tools/xlate/1
2
3
4
| 47 73 83 107 53 92 50 77 84 51 56 50 45 49 48 48 51 13 10 13 10 48 45 48 58 57 54 46 49 46 49 40 53 65 52 50 52 53 53 54 51 48 51 48 51 53 51 48 51 54 51 57 51 52 51 50 51 51 51 52 51 49 51 49 41 13 10 49 45 48 58 49 46 56 46 49 40 48 49 48 53 49 46 55 56 54 42 107 87 104 41 13 10 49 45 48 58 49 46 56 46 50 40 48 48 53 57 54 46 48 49 50 42 107 87 104 41 13 10 49 45 48 58 50 46 56 46 49 40 48 48 49 56 50 46 56 56 48 42 107 87 104 41 13 10 49 45 48 58 50 46 56 46 50 40 48 48 52 50 50 46 51 57 51 42 107 87 104 41 13 10 48 45 48 58 57 54 46 49 52 46 48 40 48 48 48 49 41 13 10 49 45 48 58 49 46 55 46 48 40 48 48 48 48 46 54 49 42 107 87 41 13 10 49 45 48 58 50 46 55 46 48 40 48 48 48 48 46 48 48 42 107 87 41 13 10 48 45 48 58 49 55 46 48 46 48 40 48 57 57 57 46 48 48 42 107 87 41 13 10 48 45 48 58 57 54 46 51 46 49 48 40 49 41 13 10 48 45 48 58 57 54 46 49 51 46 49 40 41 13 10 48 45 48 58 57 54 46 49 51 46 48 40 41 13 10 48 45 49 58 50 52 46 49 46 48 40 51 41 13 10 48 45 49 58 57 54 46 49 46 48 40 51 50 51 56 51 48 51 49 51 49 51 48 51 48 51 49 51 50 51 48 51 49 51 49 51 48 51 56 51 50 51 49 51 50 41 13 10 48 45 49 58 50 52 46 51 46 48 40 49 50 49 48 48 54 49 57 48 48 48 48 41 40 48 48 41 40 54 48 41 40 49 41 40 48 45 49 58 50 52 46 50 46 49 41 40 109 51 41 13 10 40 48 48 48 57 54 46 56 57 56 41 13 10 48 45 49 58 50 52 46 52 46 48 40 49 41 13 10 33 13 10 |
En daar komt dan dit uit:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| /ISk5\2MT382-1003 0-0:96.1.1(5A424556303035303639343233343131) 1-0:1.8.1(01051.786*kWh) 1-0:1.8.2(00596.012*kWh) 1-0:2.8.1(00182.880*kWh) 1-0:2.8.2(00422.393*kWh) 0-0:96.14.0(0001) 1-0:1.7.0(0000.61*kW) 1-0:2.7.0(0000.00*kW) 0-0:17.0.0(0999.00*kW) 0-0:96.3.10(1) 0-0:96.13.1() 0-0:96.13.0() 0-1:24.1.0(3) 0-1:96.1.0(3238303131303031323031313038323132) 0-1:24.3.0(121006190000)(00)(60)(1)(0-1:24.2.1)(m3) (00096.898) 0-1:24.4.0(1) ! |
Echter: De VB code zoals hier gebruikt geeft een foutmelding dat er iets fout gaat in de volgende regel code:
Visual Basic .NET:
1
2
3
4
5
| If Not File.Exists(strFileName) Then If Not Directory.Exists(strPath) Then Directory.CreateDirectory(strPath) End If End If |
En dan met name de regel
Visual Basic .NET:
1
| Directory.CreateDirectory(strPath) |
Krijgt een error:
code:
1
2
3
| A first chance exception of type 'System.NotSupportedException' occurred in Microsoft.SPOT.IO.dll A first chance exception of type 'System.NotSupportedException' occurred in Microsoft.SPOT.IO.dll A first chance exception of type 'System.NotSupportedException' occurred in Microsoft.SPOT.IO.dll |
Wat er in mijn ogen voor zorgt dat de tekst niet in een file geschreven wordt. Waarom weet ik dus nog niet. Maar het resultaat is qua ASCII code en text correct, maar wordt niet weggeschreven.
De berichten beginnen dus altijd met een '/' (ASCII 47) en eindigen altijd met een '!' (ASCII 10).
Extra informatie:
Daarnaast heb ik ook een FTDI RS232-USB kabel aangesloten op de P1 poort die rechtstreeks naar de computer gaat om te controleren hoe de berichten eruit zien. Deze lees ik uit met een stukje software op mijn pc. Alles wat ik hierboven laat zien, en van nu af aan laat zien is puur en alleen maar Netduino resultaten.
Ik hoop dat ik nu duidelijk genoeg heb kunnen maken hoe ik het aangesloten heb en hoe ik tot deze resultaten kom. Bij vraagtekens graag nogmaals vragen!

[Voor 35% gewijzigd door Gé Brander op 06-10-2012 20:42]
Vroeger was alles beter... Geniet dan maar van vandaag, morgen is alles nog slechter!
Nou, dan ben jij toch klaar. Die IC is er toch een van een paar dubbeltjes.
Kan jij een compleet aansluit schema maken voor Hans en mij en anderen.
Hoe de draadjes vanaf de P1 naar de ic en naar de Netduino, (kan eenvoudig getekend met pen en papier, foto......)
Hoef ik het wiel niet meer uit te vinden en kan ik beginnen met het complete programma in elkaar te zetten, ben ik snel een a twee dagen mee bezig om het allemaal netjes in elkaar te plakken. De beta projectjes kan je dan tussentijds testen.
Hans kan dan zo een IC kopen op internet, ik geloof 5 voor een euro.
Heb het liefst dat we met zijn drieen hetzelfde systeem hebben, dat is voor mij het makkelijkst, ook om het gestroomlijnd te krijgen.
Het goede nieuws is dat vandaag de webserver het uitstekend heeft gedaan, deze heb ik in mijn alreeds draaiende meterkast project geplakt, nu met email service. Echt eeeel eeel leuk.
Kan jij een compleet aansluit schema maken voor Hans en mij en anderen.
Hoe de draadjes vanaf de P1 naar de ic en naar de Netduino, (kan eenvoudig getekend met pen en papier, foto......)
Hoef ik het wiel niet meer uit te vinden en kan ik beginnen met het complete programma in elkaar te zetten, ben ik snel een a twee dagen mee bezig om het allemaal netjes in elkaar te plakken. De beta projectjes kan je dan tussentijds testen.
Hans kan dan zo een IC kopen op internet, ik geloof 5 voor een euro.
Heb het liefst dat we met zijn drieen hetzelfde systeem hebben, dat is voor mij het makkelijkst, ook om het gestroomlijnd te krijgen.
Het goede nieuws is dat vandaag de webserver het uitstekend heeft gedaan, deze heb ik in mijn alreeds draaiende meterkast project geplakt, nu met email service. Echt eeeel eeel leuk.
Zoals beschreven in: c70070540 in "Slimme meter via P1-poort loggen met een Netduino Plus"
Ik heb nog 1x 7404 liggen. zal ik hem opsturen naar je Joop?
Ik heb nog 1x 7404 liggen. zal ik hem opsturen naar je Joop?
[Voor 21% gewijzigd door Gé Brander op 06-10-2012 21:15]
Vroeger was alles beter... Geniet dan maar van vandaag, morgen is alles nog slechter!
Neuh, lang zo leuk niet. Ik ben op zoek naar de ontsleutelcode. Hier een volledige message:
27, 86, 10, 101, 89, 69, 100, 82, 114, 118, 22, 86, 86, 74, 86, 31, 37, 31, 11, 13, 19, 35, 70, 94, 21, 125, 54, 46, 42, 21, 19, 25, 31, 25, 31, 25, 21, 25, 31, 25, 19, 25, 13, 25, 50, 50, 31, 25, 25, 25, 50, 90, 74, 86, 74, 31, 11, 70, 94, 31, 31, 50, 70, 30, 30, 86, 82, 20, 33, 39, 105, 44, 50, 123, 70, 94, 31, 31, 19, 50, 35, 13, 21, 86, 82, 20, 33, 39, 105, 108, 50, 123, 70, 94, 31, 31, 13, 34, 70, 25, 25, 86, 82, 20, 33, 39, 105, 108, 50, 123, 70, 94, 31, 62, 38, 35, 46, 42, 82, 20, 33, 61, 86, 44, 108, 54, 114, 50, 109, 118, 118, 86, 39, 105, 44, 50, 50, 109, 118, 118, 22, 54, 82, 37, 33, 39, 105, 108, 50, 50, 109, 118, 118, 118, 54, 118, 37, 33, 61, 86, 44, 18, 50, 54, 109, 44, 44, 108, 118, 37, 33, 61, 86, 44, 108, 54, 54, 114, 45, 61, 86, 44, 108, 54, 18, 54, 45, 61, 86, 44, 108, 54, 18, 54, 45, 61, 86, 108, 66, 39, 52, 45, 61, 86, 44, 108, 54, 50, 45, 54, 18, 36, 118, 22, 86, 18, 86, 18, 118, 22, 118, 22, 86, 18, 54, 18, 86, 18, 118, 22, 118, 22, 38, 18, 86, 18, 118, 22, 86, 18, 54, 61, 86, 108, 114, 50, 54, 45, 50, 82, 114, 118, 54, 54, 82, 114, 118, 118, 118, 101, 109, 118, 101, 109, 118, 101, 45, 66, 101, 109, 86, 108, 114, 50, 50, 101, 66, 61, 109, 118, 118, 22, 86, 50, 54, 86, 61, 86, 108, 114, 50, 50, 45, 14, 111, 57, 61
Begint dus met 27 en eindigt met 61.
Die is opgehaald met onderstaande code.
@JoopC: ziet het een beetje begrijpelijk uit?
We gingen toch bewijzen dat een Netduino slimmer is dan een Arduino? Even wat cryptografie erop loslaten. Maandag krijg jij je meter toch?
edit: zit volgens mij een foutje in. 40 zou de laatste code moeten zijn, maar die wordt niet weergegeven. Ik snap reeds waarom.
27, 86, 10, 101, 89, 69, 100, 82, 114, 118, 22, 86, 86, 74, 86, 31, 37, 31, 11, 13, 19, 35, 70, 94, 21, 125, 54, 46, 42, 21, 19, 25, 31, 25, 31, 25, 21, 25, 31, 25, 19, 25, 13, 25, 50, 50, 31, 25, 25, 25, 50, 90, 74, 86, 74, 31, 11, 70, 94, 31, 31, 50, 70, 30, 30, 86, 82, 20, 33, 39, 105, 44, 50, 123, 70, 94, 31, 31, 19, 50, 35, 13, 21, 86, 82, 20, 33, 39, 105, 108, 50, 123, 70, 94, 31, 31, 13, 34, 70, 25, 25, 86, 82, 20, 33, 39, 105, 108, 50, 123, 70, 94, 31, 62, 38, 35, 46, 42, 82, 20, 33, 61, 86, 44, 108, 54, 114, 50, 109, 118, 118, 86, 39, 105, 44, 50, 50, 109, 118, 118, 22, 54, 82, 37, 33, 39, 105, 108, 50, 50, 109, 118, 118, 118, 54, 118, 37, 33, 61, 86, 44, 18, 50, 54, 109, 44, 44, 108, 118, 37, 33, 61, 86, 44, 108, 54, 54, 114, 45, 61, 86, 44, 108, 54, 18, 54, 45, 61, 86, 44, 108, 54, 18, 54, 45, 61, 86, 108, 66, 39, 52, 45, 61, 86, 44, 108, 54, 50, 45, 54, 18, 36, 118, 22, 86, 18, 86, 18, 118, 22, 118, 22, 86, 18, 54, 18, 86, 18, 118, 22, 118, 22, 38, 18, 86, 18, 118, 22, 86, 18, 54, 61, 86, 108, 114, 50, 54, 45, 50, 82, 114, 118, 54, 54, 82, 114, 118, 118, 118, 101, 109, 118, 101, 109, 118, 101, 45, 66, 101, 109, 86, 108, 114, 50, 50, 101, 66, 61, 109, 118, 118, 22, 86, 50, 54, 86, 61, 86, 108, 114, 50, 50, 45, 14, 111, 57, 61
Begint dus met 27 en eindigt met 61.
Die is opgehaald met onderstaande code.
@JoopC: ziet het een beetje begrijpelijk uit?
Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
| Imports Microsoft.SPOT Imports Microsoft.SPOT.Hardware Imports SecretLabs.NETMF.Hardware Imports SecretLabs.NETMF.Hardware.NetduinoPlus Imports System.IO Imports System.Text Imports System.IO.Ports Namespace HansP1PoortListner Public Class SerialPortP1 Shared spSerialPort As SerialPort Shared OnboardLed As New OutputPort(Pins.ONBOARD_LED, False) Shared intFileCounter As Integer = 0 Shared Message As Byte() = New Byte(4096) {} Shared MessageLen As Integer = 0 Public Shared Sub Main() spSerialPort = New SerialPort(SerialPorts.COM2, 9600, Parity.Even, 7, StopBits.One) AddHandler spSerialPort.DataReceived, New SerialDataReceivedEventHandler(AddressOf Serial_DataReceived) spSerialPort.Open() 'forever sleep, for testing purpose only. Thread.Sleep(Timeout.Infinite) End Sub Private Shared Sub Serial_DataReceived(ByVal sender As Object, ByVal e As SerialDataReceivedEventArgs) Dim bBytesToRead As Integer = spSerialPort.BytesToRead Dim bBuffer As Byte() = New Byte(bBytesToRead - 1) {} OnboardLed.Write(True) If bBytesToRead > 0 Then spSerialPort.Read(bBuffer, 0, bBuffer.Length) For t = 0 To bBytesToRead - 1 'Debug.Print("---------------first: " & Message(0).ToString & " current: " & bBuffer(t).ToString) Message(MessageLen) = bBuffer(t) If bBuffer(t) = 40 Then 'EOT, new message starts here 'P1FileLogger(Message) Debug.Print("raw bytes: ") For i = 0 To MessageLen - 1 Debug.Print(Message(i).ToString) Next Debug.Print("end of message") 'Debug.Print(Encoding.UTF8.GetChars(Message)) Message = New Byte(4096) {} MessageLen = 0 Else MessageLen += 1 End If Next End If OnboardLed.Write(False) End Sub Private Shared Sub P1FileLogger(ByVal bBuffer As Byte()) Dim strPath As String = Nothing Dim strFileName As String = Nothing strPath = "\SD\" & DateTime.Now.ToString("MM(MMM)-yyyy") strFileName = strPath & "\" & DateTime.Now.ToString("dd-MM(MMM)-yyyy-") & intFileCounter.ToString & ".log" If Not File.Exists(strFileName) Then If Not Directory.Exists(strPath) Then Directory.CreateDirectory(strPath) End If End If Using writer As New StreamWriter(strFileName, True) writer.WriteLine("Time of Logging : " & DateTime.Now) writer.WriteLine(Encoding.UTF8.GetChars(bBuffer)) End Using intFileCounter += 1 End Sub End Class End Namespace |
We gingen toch bewijzen dat een Netduino slimmer is dan een Arduino? Even wat cryptografie erop loslaten. Maandag krijg jij je meter toch?
edit: zit volgens mij een foutje in. 40 zou de laatste code moeten zijn, maar die wordt niet weergegeven. Ik snap reeds waarom.
C700, heb ik het juist: ?
pin 1 7404 -> Pin5 P1
pin 2 7404 -> RX N+
pin 14 7404 5V, Pin2 P1 5V
pin 7 7404 gnd, Pin3 P1 gnd
Hans je code is goed, nu kan je toch ook encoderen?
pin 1 7404 -> Pin5 P1
pin 2 7404 -> RX N+
pin 14 7404 5V, Pin2 P1 5V
pin 7 7404 gnd, Pin3 P1 gnd
Hans je code is goed, nu kan je toch ook encoderen?
Nee, met een xor 127 is er nog steeds geen chocola van te maken. Hij is -nogmaals- wél reteconsistent.
Je laat een loop draaien totdat je een leesbaar telegram krijgt.
Je moet alle waarden controleren, je begint bij 0 tot 255
Zal het even voor je schrijven, moet je even wachten.
Je moet alle waarden controleren, je begint bij 0 tot 255
Zal het even voor je schrijven, moet je even wachten.
Helaas, alles van 1 t/m 127 geeft onzin. We moeten even meer buiten het doosje denken, ben ik bang.
edit: bij hoger dan 127 krijg ik een mscorlib exception.
edit: bij hoger dan 127 krijg ik een mscorlib exception.
[Voor 23% gewijzigd door hansdegit op 06-10-2012 21:56]
ik denk dat je echt de 7404 weg moet bewandelen.
Vroeger was alles beter... Geniet dan maar van vandaag, morgen is alles nog slechter!
hans, je mag zelf alle mogelijkheden testen, heb ik net ook al gedaan. Dit is een goeie oefening. :-)hansdegit schreef op zaterdag 06 oktober 2012 @ 21:55:
Helaas, alles van 1 t/m 127 geeft onzin. We moeten even meer buiten het doosje denken, ben ik bang.
edit: bij hoger dan 127 krijg ik een mscorlib exception.
Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| Imports Microsoft.SPOT Imports Microsoft.SPOT.Hardware Imports SecretLabs.NETMF.Hardware Imports SecretLabs.NETMF.Hardware.NetduinoPlus Imports System.Text Module Module1 Sub Main() ' write your code here Dim bBuffer() As Byte = {27, 86, 10, 101, 89, 69, 100, 82, 114, 118, 22, 86, 86, 74, 86, 31, 37, 31, 11, 13, 19} Dim xbuffer(bBuffer.Length) As Byte For i = 1 To 255 For t = 0 To bBuffer.Length - 1 xbuffer(t) = CByte((bBuffer(t) Xor i)) Next Debug.Print(Encoding.UTF8.GetChars(xbuffer)) Thread.Sleep(500) Next End Sub End Module |
Maak een nieuw projectje N+ aan paste deze code en ga op je computer over op project/decoder/emulator.
Zodoende doet je computer het werk en niet de Netduino.
Van de Xor kan je ook een OR of zo maken.
Ik sluit me aan bij C700, de IC weg, zijn we ook snel klaar.
Heb alle mogelijkheden al doorlopen. :-) Maar moet echt low level.
C700, is dat deze?c70070540 schreef op zaterdag 06 oktober 2012 @ 21:01:
Zoals beschreven in: c70070540 in "Slimme meter via P1-poort loggen met een Netduino Plus"
Ik heb nog 1x 7404 liggen. zal ik hem opsturen naar je Joop?
http://www.ebay.com/itm/2..._trksid=p3984.m1497.l2649
Inderdaad!
Vroeger was alles beter... Geniet dan maar van vandaag, morgen is alles nog slechter!
C700 Mooi, die heb ik liggen, als Hans er niet uitkomt met het encoderen gaan we over op jou manier.
Hans..........wat zeggen we?
Hans..........wat zeggen we?
[Voor 7% gewijzigd door Willie Wortel op 06-10-2012 22:17]
Komop mannuh, we gaan toch niet capituleren? Zo voelt het bij mij een beetje.
Dan is een Arduino tóch slimmer...Nee toch?
Dan is een Arduino tóch slimmer...Nee toch?
als jij hem niet hebt Hans dan kan ik je de mijne sturen
Vroeger was alles beter... Geniet dan maar van vandaag, morgen is alles nog slechter!
Uiteindelijk is het natuurlijk de bedoeling om die meter uit te lezen, one way or another.
Dus ja, graag.
Maar ik moet de nederlaag nog even een plekje geven. Waarom kan zo'n Arduino het nou wel?????
Dus ja, graag.
Maar ik moet de nederlaag nog even een plekje geven. Waarom kan zo'n Arduino het nou wel?????
Mail je adres maar even.
En ja, soms kan het een wel iets en het ander niet. Uiteindelijk is het .Net Microframework toch krachtiger.
En ja, soms kan het een wel iets en het ander niet. Uiteindelijk is het .Net Microframework toch krachtiger.
Vroeger was alles beter... Geniet dan maar van vandaag, morgen is alles nog slechter!
Is deze bewering nog geldig vwb het inverteren?JoopC schreef op maandag 17 september 2012 @ 14:55:
Mij maak je ook niet wijs dat een Arduino meer kan, in geen 2000 lichtjaar.
Eerst inverten, als ik de .h file heb kijk ik of we de code kunnen herschrijven, de lib zit in de Arduino IDE.
Nu heb ik weer geen winzip......ppppffffffff
Ik ben benieuwd of de P1 uberhaubt al enige onzin van betekenis uitkraamt. naar de Netduino :-)
Maar.....volg gewoon de arduino code, byte inlezen, byte shiften naar leesbare chars.
ByteThatYouWant = P1PoortByte And Not(1 << 7)
thats it.
Er kan er maar 1 de oplossing geven en dat is C700, (of wachten tot ik de meter heb, of jij een IC) die kan met en zonder IC de P1 uitlezen. Die twee tabellen kan ik dan op binair niveau analyseren. Nu moet ik maar raden of er uit jou P1 (zeker in het begin) dezelfde bytes worden verzonden als uit C700 zijn P1. Uit onderstaand zie ik geen overeenkomst.hansdegit schreef op zaterdag 06 oktober 2012 @ 22:56:
[...]
Is deze bewering nog geldig vwb het inverteren?
ingelezen: Ingelezen:
C700: 47 / 00101111 Hans: 27 00011011
C700: 73 I 01001001 Hans: 86 01010110
Als je dit onder elkaar zet:
00101111 01001001
00011011 01010110
Wat dacht jij dat de software serial lib doet bij een arduino, die doen hetzelfde als wat ik wil, gewoon softwarematig. Ik heb hier niks, kan dus niks testen op deze manier.
Ik geloof wel dat er een de-compiler is voor .dll, kan je zien hoe het is opgelost, heb ik me nooit in verdiept.
Maar de IC oplossing is voor mij ook prima, ga ik niet moeilijk over doen, het voordeel daarvan is dat de N+ dan tegen overspanning en lekspanning (ruis) beveiligd is.
Nu zit ik er toch wel erg dicht bij hoor:
raw bytes:
msg: k
end of message
raw bytes:
msg: rTzMS]MV4T0-0:96.\P5Adhj563030353036393ff0333fRZ0:\\P00j\lTVu/lK)fB\P006f.95TVu/lKIfB\P009n\j5Vu/lKIfB\P0`l.hjVu/!T)IdFf lK)ff dmolKIff dMmo!T)vfd ))Imo!T)Idd)!T)Id6d)!T)Id6d)!TIFffi!T)Idfi$6m46644,6$66446646$!TIFfd)&t=
I
)
TIFff
^! 4fJj0-tdh\\0(R!k
end of message
raw bytes:
msg: rTzMS]MV4T0-0:96.\P5Adhj563030353036393ff0333fRZ0:\\P00j\lTVu/lKL)fB\P006f.95TVu/lKIfB\P009n\j6VujclKIfB\P0`l.hjVu/!T)IdFf ]lK)ff dmolKIff dMmo!T)vfd ))Imo!T)Idd)!T)Id6d)!T)Id6d)!TIFffi!T)Idfi$6m466446$6644\6646$!TIFfd)&t
I
).
TIFff
^! 4fJj0-th\\0(R)!k
end of message
raw bytes:
msg: k
end of message
raw bytes:
msg: rTzMS]MV4T0-0:96.\P5Adhj563030353036393ff0333fRZ0:\\P00j\lTVu/lK)fB\P006f.95TVu/lKIfB\P009n\j5Vu/lKIfB\P0`l.hjVu/!T)IdFf lK)ff dmolKIff dMmo!T)vfd ))Imo!T)Idd)!T)Id6d)!T)Id6d)!TIFffi!T)Idfi$6m46644,6$66446646$!TIFfd)&t=
I
)
TIFff
^! 4fJj0-tdh\\0(R!k
end of message
raw bytes:
msg: rTzMS]MV4T0-0:96.\P5Adhj563030353036393ff0333fRZ0:\\P00j\lTVu/lKL)fB\P006f.95TVu/lKIfB\P009n\j6VujclKIfB\P0`l.hjVu/!T)IdFf ]lK)ff dmolKIff dMmo!T)vfd ))Imo!T)Idd)!T)Id6d)!T)Id6d)!TIFffi!T)Idfi$6m466446$6644\6646$!TIFfd)&t
I
).
TIFff
^! 4fJj0-th\\0(R)!k
end of message
Waar kan ik mee helpen op dit moment? (naar aanleiding van de opmerking JoopC in "Slimme meter via P1-poort loggen met een Netduino Plus" van Joop)
Ik kan van alles testen en heb tijd vandaag.
Ok, ik ben nu aan het testen met een kabel zonder de 74LS04 en met dezelfde code als.
Dan komt er dit uit:
Wat weer vertaald naar:
Er gebeurt dus in de VB code nog niets aan inverten als ik het goed heb, dus welke code moet ik dan gebruiken om inverten op de Netduino plaats te laten vinden?
Ik kan van alles testen en heb tijd vandaag.
Ok, ik ben nu aan het testen met een kabel zonder de 74LS04 en met dezelfde code als.
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
| Imports Microsoft.SPOT Imports Microsoft.SPOT.Hardware Imports SecretLabs.NETMF.Hardware Imports SecretLabs.NETMF.Hardware.NetduinoPlus Imports System.IO Imports System.Text Imports System.IO.Ports Namespace HansP1PoortListner Public Class SerialPortP1 Shared spSerialPort As SerialPort Shared OnboardLed As New OutputPort(Pins.ONBOARD_LED, False) Shared intFileCounter As Integer = 0 Public Shared Sub Main() spSerialPort = New SerialPort(SerialPorts.COM2, 9600, Parity.Even, 7, StopBits.One) AddHandler spSerialPort.DataReceived, New SerialDataReceivedEventHandler(AddressOf Serial_DataReceived) spSerialPort.Open() 'forever sleep, for testing purpose only. Thread.Sleep(Timeout.Infinite) End Sub Private Shared Sub Serial_DataReceived(ByVal sender As Object, ByVal e As SerialDataReceivedEventArgs) Dim bBytesToRead As Integer = spSerialPort.BytesToRead If bBytesToRead > 0 Then Dim bBuffer As Byte() = New Byte(bBytesToRead - 1) {} spSerialPort.Read(bBuffer, 0, bBuffer.Length) Dim blnLedOnOff As Boolean = True For t = 0 To bBytesToRead - 1 Debug.Print(bBuffer(t).ToString) OnboardLed.Write(blnLedOnOff) blnLedOnOff = Not blnLedOnOff Thread.Sleep(10) Next P1FileLogger(bBuffer) End If OnboardLed.Write(False) End Sub Private Shared Sub P1FileLogger(ByVal bBuffer As Byte()) Dim strPath As String = Nothing Dim strFileName As String = Nothing strPath = "\SD\" & DateTime.Now.ToString("MM(MMM)-yyyy") strFileName = strPath & "\" & DateTime.Now.ToString("dd-MM(MMM)-yyyy-") & intFileCounter.ToString & ".log" If Not File.Exists(strFileName) Then If Not Directory.Exists(strPath) Then Directory.CreateDirectory(strPath) End If End If Using writer As New StreamWriter(strFileName, True) writer.WriteLine("Time of Logging : " & DateTime.Now) writer.Write(writer.Encoding.GetChars(bBuffer)) End Using intFileCounter += 1 End Sub End Class End Namespace |
Dan komt er dit uit:
code:
1
2
3
4
| 94 31 31 54 54 70 25 13 25 82 20 33 61 86 44 108 54 114 50 109 118 118 86 39 105 44 50 50 109 118 118 118 54 118 37 33 39 105 108 50 50 109 118 118 118 54 123 42 82 20 43 57 61 86 44 18 50 54 109 44 44 108 118 37 33 61 86 44 108 54 54 114 45 61 86 44 108 54 18 54 45 61 86 44 108 54 18 54 45 61 86 108 114 50 50 45 61 86 44 108 54 50 45 54 18 36 118 22 86 34 86 18 118 22 118 22 86 18 54 18 118 22 86 18 86 18 118 22 36 54 18 86 18 54 61 86 108 114 50 54 45 50 82 114 118 22 66 50 114 118 118 118 101 109 118 101 109 118 101 45 101 109 86 108 114 50 50 101 66 61 109 118 118 108 100 18 68 61 86 108 114 50 50 45 111 57 61 |
Wat weer vertaald naar:
code:
1
2
| ^66F R!=V,l6r2mvvV'i,22mvvv6v%!'il22mvvv6{*R+9=V,26m,,lv%!=V,l66r-=V,l66-=V,l66-=Vlr22-=V,l62-6$vV"VvvV6vVVv$6V6=Vlr26-2RrvB2rvvvemvemve-emVlr22eB=mvvldD=Vlr22-o9= |
Er gebeurt dus in de VB code nog niets aan inverten als ik het goed heb, dus welke code moet ik dan gebruiken om inverten op de Netduino plaats te laten vinden?
[Voor 89% gewijzigd door Gé Brander op 07-10-2012 12:55]
Vroeger was alles beter... Geniet dan maar van vandaag, morgen is alles nog slechter!
Tjsa, ben nu een beetje aan het onderzoeken hoe de bytes eruitzien als je loopt te spelen met de parity instellingen en aantal databits. Dat lijkt dus wel iets consistentere berichten op te leveren. Maar ik zou niet weten hoe je daarmee zou kunnen helpen...
Ik heb nog eens getest met de code uit:
https://skydrive.live.com...=66A1B30928B97B4F%2129344
Data wordt nu wel weggeschreven, maar niet juist. De data wordt wel weggeschreven, maar elk bericht wordt verdeeld over verschillende bestanden.
https://skydrive.live.com...=66A1B30928B97B4F%2129344
Data wordt nu wel weggeschreven, maar niet juist. De data wordt wel weggeschreven, maar elk bericht wordt verdeeld over verschillende bestanden.
Vroeger was alles beter... Geniet dan maar van vandaag, morgen is alles nog slechter!
Handdoek, ring.
Het valt me zwaar, maar 'k krijg het niet voor mekaar (hé, dat rijmt!)
We gaan dus even wachten op de 7404 chip en dan hebben we tenminste alledrie dezelfde configuratie. Waarschijnlijk gaat het dan wél goed lukken.
Het valt me zwaar, maar 'k krijg het niet voor mekaar (hé, dat rijmt!)
We gaan dus even wachten op de 7404 chip en dan hebben we tenminste alledrie dezelfde configuratie. Waarschijnlijk gaat het dan wél goed lukken.
Met de code van C700 ga ik vanavond en/of morgenochtend aan de gang. Het wijkt erg af van wat Hans uit de P1 krijgt, ik vermoede al zoiets. Ik zal kijken of ik het aan de praat krijg maar stel toch voor om er een IC tussen te zetten in het voorbeeld van C700. Daar zitten nl veel voordelen aan vast. De inversie wordt buiten de N+ gedaan, daardoor hou je meer computer tijd over om andere dingen te doen, we praten over een computertje zo groot als een lucifer doosje met maar 25K aan geheugen (na laden alle code). We willen de N+ ook als server waardoor de dure NAS (stroomverbruik) niet meer nodig is.
[Voor 10% gewijzigd door Willie Wortel op 07-10-2012 20:08]
Dat gaat ook niet omdat er EndOfFile Markers worden meegeschreven. Kijk eens in de ASCii tabel ter verduidelijking.c70070540 schreef op zondag 07 oktober 2012 @ 15:38:
Ik heb nog eens getest met de code uit:
https://skydrive.live.com...=66A1B30928B97B4F%2129344
Data wordt nu wel weggeschreven, maar niet juist. De data wordt wel weggeschreven, maar elk bericht wordt verdeeld over verschillende bestanden.
Ik kan ook alweer stoppen met uitzoeken, de bytes komen niet overeen:
47 73 83 107 53 92 50 77 84 51 56 50 45 49 48 48 51 13
94 31 31 54 54 70 25 13 25 82 20 33 61 86 44 108 54 114
De reeks boven is de juiste ascii.
De reeks beneden onbewerkt. (beide bron C700)
Kijk naar Byte 31 in de onderste reeks, deze komt 2x voor
Dan moet in de bovenste reeks, in ieder geval de waarde gelijk zijn, en dat is die nie....
dus vb ascii 31 -----> onbehandeld 73
kan niet ineens zijn ----> onbehandeld 83
47 73 83 107 53 92 50 77 84 51 56 50 45 49 48 48 51 13
94 31 31 54 54 70 25 13 25 82 20 33 61 86 44 108 54 114
De reeks boven is de juiste ascii.
De reeks beneden onbewerkt. (beide bron C700)
Kijk naar Byte 31 in de onderste reeks, deze komt 2x voor
Dan moet in de bovenste reeks, in ieder geval de waarde gelijk zijn, en dat is die nie....
dus vb ascii 31 -----> onbehandeld 73
kan niet ineens zijn ----> onbehandeld 83
Ik snap het niet helemaal. Wat bedoel je met de bovenste rij is de juiste ASCII? Is dat de ASCII codes die je verwacht op basis van de tekst die een bericht zou moeten zijn?
Als ik een bericht, zoals deze uit de P1 poort komt (gemeten met de FTDI RS232-USB kabel op de computer)
Op de website translate naar
Dan komt dat toch overeen met wat ik in het intermediate window zie van Visual Studio als ik de Netduino debug? Bij mij wel in ieder geval...
Echter jouw opmerking:
Ik denk dat je dat niet mag/kan vergelijken omdat de niet inverted signalen door de Netduino opgevat worden als een EOF of andere signalen.
Daarom is denk ik de 74LS04p weg de enige juiste, omdat je dan een juist signaal aan de Netduino aanbiedt.
Ik zal even proberen het signaal van de P1 poort via de FTDI RS232-USB kabel op te pikken zonder het te inverten. Eens kijken of het dan wel overeenkomt qua codes.
Al blijf ik het wel raar vinden dat ze bij het ontwerp van een communicatiepoort signalen gaan inverten... Waarom zou dat zo zijn?
Edit, onderstaande ZONDER Netduino...
P1 poort uitlezen met de FTDI RS232-USB kabel zonder inversie van het ontvangen signaal, weergegeven als HEX codes
P1 poort uitlezen met de FTDI RS232-USB kabel met inversie van het ontvangen signaal, weergegeven als HEX codes
Kunnen we dit wel vergelijken? Ook hier zie ik niet de herhaling in terugkomen zoals je zou verwachten met de 1003 tekst die je aan het eind van de eerste regel in het bericht ziet. Die twee nullen zie je netjes terug in de HEX code op positie 15 en 16 maar niet terug in de niet inverted HEX code.
We kunnen nu dus veilig stellen dat we zonder de 74LS04P niet komen waar we willen zijn.
Als ik een bericht, zoals deze uit de P1 poort komt (gemeten met de FTDI RS232-USB kabel op de computer)
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| /ISk5\2MT382-1003 0-0:96.1.1(5A424556303035303639343233343131) 1-0:1.8.1(01062.794*kWh) 1-0:1.8.2(00596.012*kWh) 1-0:2.8.1(00182.904*kWh) 1-0:2.8.2(00422.393*kWh) 0-0:96.14.0(0001) 1-0:1.7.0(0002.04*kW) 1-0:2.7.0(0000.00*kW) 0-0:17.0.0(0999.00*kW) 0-0:96.3.10(1) 0-0:96.13.1() 0-0:96.13.0() 0-1:24.1.0(3) 0-1:96.1.0(3238303131303031323031313038323132) 0-1:24.3.0(121007120000)(00)(60)(1)(0-1:24.2.1)(m3) (00098.278) 0-1:24.4.0(1) ! |
Op de website translate naar
code:
1
| 47 73 83 107 53 92 50 77 84 51 56 50 45 49 48 48 51 13 10 13 10 48 45 48 58 57 54 46 49 46 49 40 53 65 52 50 52 53 53 54 51 48 51 48 51 53 51 48 51 54 51 57 51 52 51 50 51 51 51 52 51 49 51 49 41 13 10 49 45 48 58 49 46 56 46 49 40 48 49 48 54 50 46 55 57 52 42 107 87 104 41 13 10 49 45 48 58 49 46 56 46 50 40 48 48 53 57 54 46 48 49 50 42 107 87 104 41 13 10 49 45 48 58 50 46 56 46 49 40 48 48 49 56 50 46 57 48 52 42 107 87 104 41 13 10 49 45 48 58 50 46 56 46 50 40 48 48 52 50 50 46 51 57 51 42 107 87 104 41 13 10 48 45 48 58 57 54 46 49 52 46 48 40 48 48 48 49 41 13 10 49 45 48 58 49 46 55 46 48 40 48 48 48 50 46 48 52 42 107 87 41 13 10 49 45 48 58 50 46 55 46 48 40 48 48 48 48 46 48 48 42 107 87 41 13 10 48 45 48 58 49 55 46 48 46 48 40 48 57 57 57 46 48 48 42 107 87 41 13 10 48 45 48 58 57 54 46 51 46 49 48 40 49 41 13 10 48 45 48 58 57 54 46 49 51 46 49 40 41 13 10 48 45 48 58 57 54 46 49 51 46 48 40 41 13 10 48 45 49 58 50 52 46 49 46 48 40 51 41 13 10 48 45 49 58 57 54 46 49 46 48 40 51 50 51 56 51 48 51 49 51 49 51 48 51 48 51 49 51 50 51 48 51 49 51 49 51 48 51 56 51 50 51 49 51 50 41 13 10 48 45 49 58 50 52 46 51 46 48 40 49 50 49 48 48 55 49 50 48 48 48 48 41 40 48 48 41 40 54 48 41 40 49 41 40 48 45 49 58 50 52 46 50 46 49 41 40 109 51 41 13 10 40 48 48 48 57 56 46 50 55 56 41 13 10 48 45 49 58 50 52 46 52 46 48 40 49 41 13 10 33 |
Dan komt dat toch overeen met wat ik in het intermediate window zie van Visual Studio als ik de Netduino debug? Bij mij wel in ieder geval...
Echter jouw opmerking:
Komt op mij over of je een niet inverted verhaal gaat vergelijken met een inverted verhaal. Klopt dat?JoopC schreef op zondag 07 oktober 2012 @ 20:26:
Ik kan ook alweer stoppen met uitzoeken, de bytes komen niet overeen:
47 73 83 107 53 92 50 77 84 51 56 50 45 49 48 48 51 13
94 31 31 54 54 70 25 13 25 82 20 33 61 86 44 108 54 114
De reeks boven is de juiste ascii.
De reeks beneden onbewerkt. (beide bron C700)
Kijk naar Byte 31 in de onderste reeks, deze komt 2x voor
Dan moet in de bovenste reeks, in ieder geval de waarde gelijk zijn, en dat is die nie....
dus vb ascii 31 -----> onbehandeld 73
kan niet ineens zijn ----> onbehandeld 83
Ik denk dat je dat niet mag/kan vergelijken omdat de niet inverted signalen door de Netduino opgevat worden als een EOF of andere signalen.
Daarom is denk ik de 74LS04p weg de enige juiste, omdat je dan een juist signaal aan de Netduino aanbiedt.
Ik zal even proberen het signaal van de P1 poort via de FTDI RS232-USB kabel op te pikken zonder het te inverten. Eens kijken of het dan wel overeenkomt qua codes.
Al blijf ik het wel raar vinden dat ze bij het ontwerp van een communicatiepoort signalen gaan inverten... Waarom zou dat zo zijn?
Edit, onderstaande ZONDER Netduino...
P1 poort uitlezen met de FTDI RS232-USB kabel zonder inversie van het ontvangen signaal, weergegeven als HEX codes
code:
1
2
| #28<ESC>#56<LF> #65#2C#6C#59#5A#32#2D#72#2D#56#5D#59#39#52#56#36#2D#52#5A#72#6D#76#56#56#6C#36#6D#56#32#32#25<SOH><DC4>#4E#2F#36#25#21#45#21#25#4E#6F#56#6D#36#2C#6C#59#5A#72#32#6D#25#4E#2F#52#6D#36#6C#32#2D#32#6D#76#6D#76#76#76#36#6D#25#21#45#25#4E#6F#56#6D#36#2C<DC2>#32#6D#36#6D#2C#6C#59#5A#33#34#27#76#2D#52#25#67#6F#56#6D<DC2>#76<SYN>#76<SYN>#56<DC2>#36<DC2>#76<SYN>#56<DC2>#56<DC2>#76#5A#36#6D#76#2D#32#52#72#76<SYN>#32#52#72#76#76#6D#32#2D#52#65#2D#42#56#25<BEL>#3D#6D#76#76 |
P1 poort uitlezen met de FTDI RS232-USB kabel met inversie van het ontvangen signaal, weergegeven als HEX codes
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| #2F#49#53#6B#35#5C#32#4D#54#33#38#32#2D#31#30#30#33<CR><LF> <CR><LF> #30#2D#30#3A#39#36#2E#31#2E#31#28#35#41#34#32#34#35#35#36#33#30#33#30#33#35#33#30#33#36#33#39#33#34#33#32#33#33#33#34#33#31#33#31#29<CR><LF> #31#2D#30#3A#31#2E#38#2E#31#28#30#31#30#36#39#2E#33#36#35#2A#6B#57#68#29<CR><LF> #31#2D#30#3A#31#2E#38#2E#32#28#30#30#35#39#36#2E#30#31#32#2A#6B#57#68#29<CR><LF> #31#2D#30#3A#32#2E#38#2E#31#28#30#30#31#38#35#2E#32#31#32#2A#6B#57#68#29<CR><LF> #31#2D#30#3A#32#2E#38#2E#32#28#30#30#34#32#32#2E#33#39#33#2A#6B#57#68#29<CR><LF> #30#2D#30#3A#39#36#2E#31#34#2E#30#28#30#30#30#31#29<CR><LF> #31#2D#30#3A#31#2E#37#2E#30#28#30#30#30#32#2E#38#37#2A#6B#57#29<CR><LF> #31#2D#30#3A#32#2E#37#2E#30#28#30#30#30#30#2E#30#30#2A#6B#57#29<CR><LF> #30#2D#30#3A#31#37#2E#30#2E#30#28#30#39#39#39#2E#30#30#2A#6B#57#29<CR><LF> #30#2D#30#3A#39#36#2E#33#2E#31#30#28#31#29<CR><LF> #30#2D#30#3A#39#36#2E#31#33#2E#31#28#29<CR><LF> #30#2D#30#3A#39#36#2E#31#33#2E#30#28#29<CR><LF> #30#2D#31#3A#32#34#2E#31#2E#30#28#33#29<CR><LF> #30#2D#31#3A#39#36#2E#31#2E#30#28#33#32#33#38#33#30#33#31#33#31#33#30#33#30#33#31#33#32#33#30#33#31#33#31#33#30#33#38#33#32#33#31#33#32#29<CR><LF> #30#2D#31#3A#32#34#2E#33#2E#30#28#31#32#31#30#30#37#32#31#30#30#30#30#29#28#30#30#29#28#36#30#29#28#31#29#28#30#2D#31#3A#32#34#2E#32#2E#31#29#28#6D#33#29<CR><LF> #28#30#30#30#39#39#2E#33#30#31#29<CR><LF> #30#2D#31#3A#32#34#2E#34#2E#30#28#31#29<CR><LF> #21<CR><LF> |
Kunnen we dit wel vergelijken? Ook hier zie ik niet de herhaling in terugkomen zoals je zou verwachten met de 1003 tekst die je aan het eind van de eerste regel in het bericht ziet. Die twee nullen zie je netjes terug in de HEX code op positie 15 en 16 maar niet terug in de niet inverted HEX code.
We kunnen nu dus veilig stellen dat we zonder de 74LS04P niet komen waar we willen zijn.
[Voor 132% gewijzigd door Gé Brander op 07-10-2012 21:35]
Vroeger was alles beter... Geniet dan maar van vandaag, morgen is alles nog slechter!
Signal Inversion
“Normal” TTL serial signaling defines a start bit as a transition from “high” to “low” logic. Logical 1 is “high”, 0 is “low”. But some serial devices turn this logic upside down, using what we call “inverted signaling”. As of version 10, NewSoftSerial supports these devices natively with a third parameter in the constructor
Ja, ik vergelijk de inverted met de niet behandelde bytes.
Kunnen we wel mee stoppen omdat we de functies niet voorhanden hebben, dan zou ik dit moeten herschrijven naar C#. pppffffff
Resumé mee, het is niet zo dat de N+ het niet kan, we hebben gewoon de library niet voorhanden.
http://arduiniana.org/libraries/newsoftserial/
Bovenstaande originele arduino invert code is vrij eenvoudig te converteren, zal wel een en ander schrijven als ik de P1 kan uitlezen maar op voorhand ga ik voor de IC.
“Normal” TTL serial signaling defines a start bit as a transition from “high” to “low” logic. Logical 1 is “high”, 0 is “low”. But some serial devices turn this logic upside down, using what we call “inverted signaling”. As of version 10, NewSoftSerial supports these devices natively with a third parameter in the constructor
Ja, ik vergelijk de inverted met de niet behandelde bytes.
Kunnen we wel mee stoppen omdat we de functies niet voorhanden hebben, dan zou ik dit moeten herschrijven naar C#. pppffffff
Resumé mee, het is niet zo dat de N+ het niet kan, we hebben gewoon de library niet voorhanden.
http://arduiniana.org/libraries/newsoftserial/
C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
| // If RX line is high, then we don't see any start bit // so interrupt is probably not for us if (_inverse_logic ? rx_pin_read() : !rx_pin_read()) { // Wait approximately 1/2 of a bit width to "center" the sample tunedDelay(_rx_delay_centering); DebugPulse(_DEBUG_PIN2, 1); // Read each of the 8 bits for (uint8_t i=0x1; i; i <<= 1) { tunedDelay(_rx_delay_intrabit); DebugPulse(_DEBUG_PIN2, 1); uint8_t noti = ~i; if (rx_pin_read()) d |= i; else // else clause added to ensure function timing is ~balanced d &= noti; } // skip the stop bit tunedDelay(_rx_delay_stopbit); DebugPulse(_DEBUG_PIN2, 1); if (_inverse_logic) d = ~d; |
Bovenstaande originele arduino invert code is vrij eenvoudig te converteren, zal wel een en ander schrijven als ik de P1 kan uitlezen maar op voorhand ga ik voor de IC.
[Voor 19% gewijzigd door Willie Wortel op 08-10-2012 07:37]
Hier de vernieuwde sub routine om de ontvangen P1 poort telegram te verwerken in de structure.
Visual Basic .NET:
1
| 'komt een hele nieuwe aan, veel efficienter. |
[Voor 127% gewijzigd door Willie Wortel op 09-10-2012 08:17. Reden: leesbaarheid vergroot.]
Zit op de bus, zal er morgen wel zijn.hansdegit schreef op zondag 07 oktober 2012 @ 17:06:
Handdoek, ring.
Het valt me zwaar, maar 'k krijg het niet voor mekaar (hé, dat rijmt!)
We gaan dus even wachten op de 7404 chip en dan hebben we tenminste alledrie dezelfde configuratie. Waarschijnlijk gaat het dan wél goed lukken.
Vroeger was alles beter... Geniet dan maar van vandaag, morgen is alles nog slechter!
Mooi C700 (je lijkt wel James Bond), kunnen we gaan testen.
Is er nog iets wat ik vanavond kan testen voor je Joop?
Vroeger was alles beter... Geniet dan maar van vandaag, morgen is alles nog slechter!
Nou, ik ben nu een test programma voor jullie aan het schrijven, maar is nog niet af.c70070540 schreef op maandag 08 oktober 2012 @ 20:14:
Is er nog iets wat ik vanavond kan testen voor je Joop?
Maar om 9 uur nederland 3 tegenlicht is interessant.
Dus ik weet niet of het vanavond af is.
Het hoeft ook niet vanavond af hoor.JoopC schreef op maandag 08 oktober 2012 @ 20:20:
[...]
Nou, ik ben nu een test programma voor jullie aan het schrijven, maar is nog niet af.
Maar om 9 uur nederland 3 tegenlicht is interessant.
Dus ik weet niet of het vanavond af is.
Ga vooral lekker genieten van andere dingen. Zoals vrouw of zo, ook belangrijk schijnt.

Vroeger was alles beter... Geniet dan maar van vandaag, morgen is alles nog slechter!
C700, ben nu een test opstelling aan het hatseflatsen maar wat is nu pin 1 etc op de 7404? Er zit een inkeping op de ic, dus waar moet ik beginnen met tellen.?.c70070540 schreef op dinsdag 02 oktober 2012 @ 19:40:
Kan het hiermee te maken hebben?
[...]
Ik heb een 74LS04P gebruikt om het signaal te inverteren naar de Netduino.
Dit is het schema hoe ik het ga proberen:
[afbeelding]
Vrijdagochtend wordt de meter geplaatst, dus alles in orde maken.
BTW de testversie is gereed, zal hem op de skydrive plaatsen.
JoopC, de pinlayout is uit de volgende documenten te halen. Kijk goed welke versie van 7404 jij hebt.
http://www.alldatasheet.com/view.jsp?sSearchword=74ls04p
http://www.alldatasheet.com/view.jsp?sSearchword=74ls04p
Vroeger was alles beter... Geniet dan maar van vandaag, morgen is alles nog slechter!
c, de IC is binnen. Muchos gracias!
HD74LS04P (2a36). Misschien maar even een printbordje gaan scoren..Of kan ik 'em ergens anders op klemmen/lijmen/solderen?
HD74LS04P (2a36). Misschien maar even een printbordje gaan scoren..Of kan ik 'em ergens anders op klemmen/lijmen/solderen?
Server aan de gang met ingelezen data, werkt goed moet ik zeggen.
Ik heb deze HD74LS04P,
http://pdf1.alldatasheet....61/RENESAS/HD74LS04P.html
pin1 zit dan RECHTS naast de inkeping.
Edit: moet een nieuwe bril kopen.
Ik heb deze HD74LS04P,
http://pdf1.alldatasheet....61/RENESAS/HD74LS04P.html
pin1 zit dan RECHTS naast de inkeping.
Edit: moet een nieuwe bril kopen.
[Voor 21% gewijzigd door Willie Wortel op 10-10-2012 13:49]
Cool, dat ziet er leuk uit. Ben benieuwd of het hier net zo soepel gaat. Zet maar op Skydrive dan gooi ik het zo ook even naar mijn Netduino.
Vroeger was alles beter... Geniet dan maar van vandaag, morgen is alles nog slechter!
C700, als jij de netduino aangesloten hebt, kijk je dan ook op de monitor mee of...
Bedoel je daarmee de intermediate window? Indien ja, dan kijk ik daar ook op mee.JoopC schreef op dinsdag 09 oktober 2012 @ 13:54:
C700, als jij de netduino aangesloten hebt, kijk je dan ook op de monitor mee of...
Vroeger was alles beter... Geniet dan maar van vandaag, morgen is alles nog slechter!
Daarom heb ik de file aangepast, kan je kijken wat er fout gaat.c70070540 schreef op dinsdag 09 oktober 2012 @ 14:34:
[...]
Bedoel je daarmee de intermediate window? Indien ja, dan kijk ik daar ook op mee.
Commando,s zijn: test, telegram, directory, getfile, deletefile, loadfile, Netduino:reboot
dus http://[IP]/test
Nou ben ik benieuwd, ik heb in de blind zitten programmeren.
[Voor 11% gewijzigd door Willie Wortel op 09-10-2012 15:01]
Hoe werkt getfile, deletefile, loadfile ? Ik krijg steeds een 'This page can't be displayed'
Vroeger was alles beter... Geniet dan maar van vandaag, morgen is alles nog slechter!
Klopt die bestaan niet.c70070540 schreef op dinsdag 09 oktober 2012 @ 15:45:
Hoe werkt getfile, deletefile, loadfile ? Ik krijg steeds een 'This page can't be displayed'

Haha!!!
Kijk eens wat ik nou uit mijn meter tover?
Nu eens de build van JoopC proberen.


Kijk eens wat ik nou uit mijn meter tover?
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| /ISk5\2MT382-1003 0-0:96.1.1(5A424556303035303639323730333131) 1-0:1.8.1(00778.170*kWh) 1-0:1.8.2(00712.342*kWh) 1-0:2.8.1(00928.606*kWh) 1-0:2.8.2(02088.337*kWh) 0-0:96.14.0(0002) 1-0:1.7.0(0000.00*kW) 1-0:2.7.0(0000.33*kW) 0-0:17.0.0(0999.00*kW) 0-0:96.3.10(1) 0-0:96.13.1() 0-0:96.13.0() 0-1:24.1.0(3) 0-1:96.1.0(3238303131303031323130303131303132) 0-1:24.3.0(121009160000)(00)(60)(1)(0-1:24.2.1)(m3) (00032.838) 0-1:24.4.0(1) ! |
Nu eens de build van JoopC proberen.
Hans, is ieder bericht goed of een enkele?hansdegit schreef op dinsdag 09 oktober 2012 @ 16:11:
Haha!!!![]()
![]()
Kijk eens wat ik nou uit mijn meter tover?
code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 /ISk5\2MT382-1003 0-0:96.1.1(5A424556303035303639323730333131) 1-0:1.8.1(00778.170*kWh) 1-0:1.8.2(00712.342*kWh) 1-0:2.8.1(00928.606*kWh) 1-0:2.8.2(02088.337*kWh) 0-0:96.14.0(0002) 1-0:1.7.0(0000.00*kW) 1-0:2.7.0(0000.33*kW) 0-0:17.0.0(0999.00*kW) 0-0:96.3.10(1) 0-0:96.13.1() 0-0:96.13.0() 0-1:24.1.0(3) 0-1:96.1.0(3238303131303031323130303131303132) 0-1:24.3.0(121009160000)(00)(60)(1)(0-1:24.2.1)(m3) (00032.838) 0-1:24.4.0(1) !
Nu eens de build van JoopC proberen.
Bij hoeveel goed berichten leggen we de grens? Ik had er net een stuk of tien over mijn scherm rollen.
Let wel: is met mijn laatste code. Die checkt of er een 33 binnenkomt, zo ja: einde bericht.
Let wel: is met mijn laatste code. Die checkt of er een 33 binnenkomt, zo ja: einde bericht.
Wat is 33 dan? De [!] ?
Aha, ik zie het al:
Aha, ik zie het al:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| #47#73#83#107#53#92#50#77#84#51#56#50#45#49#48#48#51<CR><LF> <CR><LF> #48#45#48#58#57#54#46#49#46#49#40#53#65#52#50#52#53#53#54#51#48#51#48#51#53#51#48#51#54#51#57#51#52#51#50#51#51#51#52#51#49#51#49#41<CR><LF> #49#45#48#58#49#46#56#46#49#40#48#49#48#55#53#46#49#49#54#42#107#87#104#41<CR><LF> #49#45#48#58#49#46#56#46#50#40#48#48#54#48#54#46#54#53#55#42#107#87#104#41<CR><LF> #49#45#48#58#50#46#56#46#49#40#48#48#49#56#53#46#50#49#50#42#107#87#104#41<CR><LF> #49#45#48#58#50#46#56#46#50#40#48#48#52#50#54#46#49#54#48#42#107#87#104#41<CR><LF> #48#45#48#58#57#54#46#49#52#46#48#40#48#48#48#50#41<CR><LF> #49#45#48#58#49#46#55#46#48#40#48#48#48#48#46#48#48#42#107#87#41<CR><LF> #49#45#48#58#50#46#55#46#48#40#48#48#48#49#46#48#48#42#107#87#41<CR><LF> #48#45#48#58#49#55#46#48#46#48#40#48#57#57#57#46#48#48#42#107#87#41<CR><LF> #48#45#48#58#57#54#46#51#46#49#48#40#49#41<CR><LF> #48#45#48#58#57#54#46#49#51#46#49#40#41<CR><LF> #48#45#48#58#57#54#46#49#51#46#48#40#41<CR><LF> #48#45#49#58#50#52#46#49#46#48#40#51#41<CR><LF> #48#45#49#58#57#54#46#49#46#48#40#51#50#51#56#51#48#51#49#51#49#51#48#51#48#51#49#51#50#51#48#51#49#51#49#51#48#51#56#51#50#51#49#51#50#41<CR><LF> #48#45#49#58#50#52#46#51#46#48#40#49#50#49#48#48#57#49#54#48#48#48#48#41#40#48#48#41#40#54#48#41#40#49#41#40#48#45#49#58#50#52#46#50#46#49#41#40#109#51#41<CR><LF> #40#48#48#49#48#52#46#48#55#52#41<CR><LF> #48#45#49#58#50#52#46#52#46#48#40#49#41<CR><LF> #33<CR><LF> |
[Voor 97% gewijzigd door Gé Brander op 09-10-2012 16:31]
Vroeger was alles beter... Geniet dan maar van vandaag, morgen is alles nog slechter!
Ja, 33 is uitroepteken. Daarop volgt nog wel een CR/LF, maar dat was voor deze test niet zo van belang. Dus eigenlijk is het zuiverder om einde bericht te roepen als er "33 13 10" langskomt.
LOL!hansdegit schreef op dinsdag 09 oktober 2012 @ 16:58:
[...]
Nee, er staan naar mening teveel door GC geleverde kWh's op en die stand van het gas bevalt me ook niet, maar technisch zien alle berichten er goed uit.

Vroeger was alles beter... Geniet dan maar van vandaag, morgen is alles nog slechter!
Wat is de link naar de juiste sourcecode op de skydrive? Ben benieuwd...
Ik moet eerst nog een paar aanpassingen doen, het werkt nog niet zoals het hoort.
Hier schijnt het gel;ukt te zijn m et een Arduino, misschien handig ??
http://zonnigbreda.blogsp...ting-online-met-cosm.html
http://zonnigbreda.blogsp...ting-online-met-cosm.html
En? Heb je de fout gevonden?JoopC schreef op dinsdag 09 oktober 2012 @ 20:58:
Ik moet eerst nog een paar aanpassingen doen, het werkt nog niet zoals het hoort.
Reddo, ziet er goed uit zeg, knap gedaan. Heb je ook een link van je datalogging of is dat private?reddo schreef op woensdag 10 oktober 2012 @ 22:28:
Hier schijnt het gel;ukt te zijn m et een Arduino, misschien handig ??
http://zonnigbreda.blogsp...ting-online-met-cosm.html
Waarom zo negatief? Wat is er gebeurd? Hoe kunnen we helpen?
Hans heb, je al wat gedaan aan de P1 poort website?hansdegit schreef op maandag 15 oktober 2012 @ 20:42:
Waarom zo negatief? Wat is er gebeurd? Hoe kunnen we helpen?
De json data die nodig is in de website, zodat ik de routines kan schrijven.
Edit:
Ik denk aan een goedkope tablet aan de muur en een website met tab bladen ivm verschillende data.
Ben al aan het proberen.
[Voor 16% gewijzigd door Willie Wortel op 15-10-2012 21:43]
Die website wordt een copy/paste van mijn zonnewebsite. Een cacher die de database bevraagt en in JSON uitspuugt en een logger die de door de Netduino verzamelde data in de database plempt.
En dan ben ik dus een beetje afhankelijk van de manier waarop we de p1 data gaan vastleggen. In een csv file per dag? Of een vraag/antwoord spelletje?
Voor mij hoeft die website op de Netduino niet zo uitgebreid hoor. Gewoon de verzamelde data vanaf moment x weergeven, that's it. Beetje zoals de Youless?
edit:
zitten we in een deadlock? Vraag jij nu aan mij hoe ik het wil hebben zodat jij de routines kunt schrijven terwijl ik zit te wachten hoe jij de website in elkaar flanst?
En dan ben ik dus een beetje afhankelijk van de manier waarop we de p1 data gaan vastleggen. In een csv file per dag? Of een vraag/antwoord spelletje?
Voor mij hoeft die website op de Netduino niet zo uitgebreid hoor. Gewoon de verzamelde data vanaf moment x weergeven, that's it. Beetje zoals de Youless?
edit:
zitten we in een deadlock? Vraag jij nu aan mij hoe ik het wil hebben zodat jij de routines kunt schrijven terwijl ik zit te wachten hoe jij de website in elkaar flanst?
[Voor 15% gewijzigd door hansdegit op 15-10-2012 22:30]