Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

Nokia 3310 stuurt teveel SMS frames

Pagina: 1
Acties:
  • 160 views sinds 30-01-2008
  • Reageer

  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Topicstarter
Nogal een gespecialiseerde vraag, maar hoop toch hier een antwoord te vinden.

Ik ben bezig met een applicatie welke via het FBUS protocol (serieel) de binnengekomen SMS-jes uit een Nokia 3310 kan lezen. Het opvragen van gegevens uit de GSM gaat goed, alleen op het moment dat er een SMS binnenkomt krijg ik de frames dubbel binnen ondanks dat ik direct een acknowledge terug stuur naar de GSM:
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
Inschakelen uitgebreide functies
22:12:56:130: Write frame: 1E 00 0C 40 00 06 00 01 64 01 01 40 77 06
22:12:56:191: Read frame: 1E 0C 00 7F 00 02 40 80 5E F1
22:12:56:191: Got acknowledge frame: True
22:12:56:201: Read frame: 1E 0C 00 40 00 0E 01 01 64 03 01 4F 0D 01 01 01 1B 58 01 41 6C 16
22:12:56:201: Write frame: 1E 00 0C 7F 00 02 40 01 52 7C
22:12:56:201: Frame read, queue count: 1

Opvragen IMEI
22:12:56:211: Write frame: 1E 00 0C 40 00 05 00 01 66 01 41 00 35 45
22:12:56:271: Read frame: 1E 0C 00 7F 00 02 40 01 5E 70
22:12:56:271: Got acknowledge frame: True
22:12:56:281: Read frame: 1E 0C 00 40 00 16 01 01 66 01 33 35 31 34 35 38 38 30 33 38 37 33 31 33 37 00 01 42 75 29
22:12:56:281: Write frame: 1E 00 0C 7F 00 02 40 02 52 7F
22:12:56:281: Frame read, queue count: 1
22:12:56:291: Phone IMEI: 351458803873137

Wachten op SMSjes...
22:13:33:705: Read frame: 1E 0C 00 02 00 7A 01 08 00 10 02 01 00 07 91 13 56 04 88 01 40 00 00 00 00 04 00 00 5C 0B 91 13 56 55 07 73 F1 00 00 00 00 40 21 02 22 31 33 40 C4 34 1D 94 9E 83 CA 65 37 88 5E 9E D3 5D 20 6B F8 5C 06 D1 CB EB B2 7B 0E A2 AB DF 62 71 59 0E BA 97 E5 6B 3A C8 5D 07 C1 CB 72 73 79 4C 07 A1 DF 6F 38 28 BD 76 81 88 69 3A 28 3D 07 95 CB 6E 10 BD 3C A7 BB 40 C5 B4 9B 5C 06 D1 CB 73 02 43 E4 7C
22:13:33:705: Write frame: 1E 00 0C 7F 00 02 02 03 10 7E
22:13:33:705: Frame read, queue count: 1
22:13:33:715: Read frame: 1E 0C 00 02 00 7A 01 08 00 10 02 01 00 07 91 13 56 04 88 01 40 00 00 00 00 04 00 00 5C 0B 91 13 56 55 07 73 F1 00 00 00 00 40 21 02 22 31 33 40 C4 34 1D 94 9E 83 CA 65 37 88 5E 9E D3 5D 20 6B F8 5C 06 D1 CB EB B2 7B 0E A2 AB DF 62 71 59 0E BA 97 E5 6B 3A C8 5D 07 C1 CB 72 73 79 4C 07 A1 DF 6F 38 28 BD 76 81 88 69 3A 28 3D 07 95 CB 6E 10 BD 3C A7 BB 40 C5 B4 9B 5C 06 D1 CB 73 02 43 E4 7C
22:13:33:715: Write frame: 1E 00 0C 7F 00 02 02 03 10 7E
22:13:33:765: Read frame: 1E 0C 00 02 00 05 BA 0B 04 01 04 00 A4
22:13:33:765: Write frame: 1E 00 0C 7F 00 02 02 04 10 79
22:13:33:765: Frame read, queue count: 2
22:13:33:765: Attach frame to previous frame
22:13:33:785: Read frame: 1E 0C 00 02 00 05 BA 0B 04 01 04 00 A4
22:13:33:785: Write frame: 1E 00 0C 7F 00 02 02 04 10 79

Hier zie je dat de eerste frames wel normaal binnenkomen. Vervolgens schakel ik een timer in welke om de 10ms (dit moet toch snel genoeg zijn?) controleert of er frames binnengekomen zijn. Dan komt er een SMS binnen waarvan ik de frames 2 dubbel binnen krijg.

Kan iemand dit verklaren en misschien een oplossing aan kan dragen. Ben hier inmiddels al een tijdje mee bezig geweest, maar krijg het niet echt voor elkaar.

"The shell stopped unexpectedly and Explorer.exe was restarted."


  • pjvandesande
  • Registratie: Maart 2004
  • Laatst online: 06-10 13:51

pjvandesande

GC.Collect(head);

Is het heel erg dat je dubbelen smsjes binnen krijgt. Het klinkt niet netjes maar je kan zelf toch de dubbelen filteren.

  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Topicstarter
questa schreef op dinsdag 21 december 2004 @ 07:04:
Is het heel erg dat je dubbelen smsjes binnen krijgt. Het klinkt niet netjes maar je kan zelf toch de dubbelen filteren.
Ik krijg geen dubbele SMSjes binnen, maar de frames komen dubbel binnen. Soms (zoals ook in het voorbeeld hierboven) is een SMS zo lang dat hij in 2 of meer frames binnenkomt, dan wordt het onpraktisch. Ik heb het inmiddels wel opgelost dmv een workaround (dubbele frames op de frame queue negeren), maar ik had liever gezien dat ik oorzaak kan oplossen.

"The shell stopped unexpectedly and Explorer.exe was restarted."


  • riezebosch
  • Registratie: Oktober 2001
  • Laatst online: 31-10 11:58
Misschien dat je timer juist veel te laag staat? Dat je opnieuw in gaat lezen terwijl de oude nog niet eens verwijderd is?

Canon EOS 400D + 18-55mm F3.5-5.6 + 50mm F1.8 II + 24-105 F4L + 430EX Speedlite + Crumpler Pretty Boy Back Pack


  • pjvandesande
  • Registratie: Maart 2004
  • Laatst online: 06-10 13:51

pjvandesande

GC.Collect(head);

Geef je wel eerst een ontvangste bevestiging en daarna query je pas weer opnieuw, het kan namelijk zijn dat je als je met meerderen thread werkt dat je anderen thread al weer aan het query'n is voordat jij een ontvangst bestiging hebt gegeven.

  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Topicstarter
Ik maak geen gebruik van threads.
Verder stuur ik een bevestiging (acknowledge), zoals te zien is in het voorbeeld. Het lijkt er inderdaad op dat ik dit niet snel genoeg doe, aangezien de GSM het frame alweer opnieuw stuurt. Maar het gaat ook weer niet zo traag, omdat de GSM het frame maar twee keer stuurt. Normaal als de GSM niet een acknowledge krijgt dan stuurt hij het frame drie keer.

Ik stuur verder geen aanvragen naar de GSM, dit is ook niet nodig aangezien de GSM gewoon de frames stuurt en ik ze moet bevestigen.

Ik poll nu de seriele poort om de 10ms dmv van een Timer. Zelf dacht ik dat dit snel genoeg was. Ik zal vanavond eens proberen het pollen in een aparte thread te stoppen, zodat er geen delay meer is.

"The shell stopped unexpectedly and Explorer.exe was restarted."


  • pjvandesande
  • Registratie: Maart 2004
  • Laatst online: 06-10 13:51

pjvandesande

GC.Collect(head);

Wat je kan doen is even elke ms pollen of zelfs even zonder interval en kijken hoeveel tijd er zit tussen de pakketjes.

Daarmee kun je een schatting maken hoesnel je moet pollen.

  • Infinitive
  • Registratie: Maart 2001
  • Laatst online: 25-09-2023
Zo wie zo zou je toch rekening moeten houden op dubbele frames, omdat het niet gegarandeerd is dat jouw progje altijd snel genoeg zal pollen.

putStr $ map (x -> chr $ round $ 21/2 * x^3 - 92 * x^2 + 503/2 * x - 105) [1..4]


  • pjvandesande
  • Registratie: Maart 2004
  • Laatst online: 06-10 13:51

pjvandesande

GC.Collect(head);

Infinitive schreef op woensdag 22 december 2004 @ 10:52:
Zo wie zo zou je toch rekening moeten houden op dubbele frames, omdat het niet gegarandeerd is dat jouw progje altijd snel genoeg zal pollen.
Nee, je moet ze iid negeren en moet er rekening mee houden dat ze dubbel binnen kunnen komen. Het protocoll geeft jou de garantie en mogelijkheid nooit, maar de TS geeft aan dat hij dit wel wil afdwingen eigelijk.

Maar de garantie heb je inderdaad nooit en eigelijk ook niet nodig.

  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Topicstarter
Ik nergeer ze ook. Alles werkt dus ook goed, alleen zou ik het allemaal toch water beter willen hebben. Ik vond het vreemd dat de frames dubbel binnen kwamen, terwijl ik ze wel acknowledge.

Ik heb gister avond geprobeerd het uitlezen in een aparte thread te stoppen, zodat ik niet om de zoveel msecs hoef te pollen maar continue kan uitlezen. Dit lijkt beter te werken. Alleen heb ik het nog niet helemaal goed kunnen testen, aangezien ik het afhandelen van de thread nog niet helemaal goed heb.

"The shell stopped unexpectedly and Explorer.exe was restarted."


  • Elvis
  • Registratie: Juli 2002
  • Laatst online: 18-11-2017

Elvis

Echo Lima Victor India Sierra

Ik weet er allemaal nix van! Maar mss moet je de kabel is nakijken ofzo...
Heb zo eens een week zitten klooien met LAN bij men vriend tot zen moeder vroeg of het wel de juiste kabel was 8)7
Ik zeg niet dat je de verkeerde kabel hebt, kan ook moeilijk denk ik, maar mss maakt ie ergens een slechte verbinding?

[GoT] TF2 Clan


  • pjvandesande
  • Registratie: Maart 2004
  • Laatst online: 06-10 13:51

pjvandesande

GC.Collect(head);

Nee, de telefoon blijft het gewoon sturen totdat jij een bevestiging (acknowledge) stuurt. Dit is gewoon het protocol.

  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Topicstarter
In een thread gaat het stukken beter. Bedankt voor het mee denken allemaal!

"The shell stopped unexpectedly and Explorer.exe was restarted."

Pagina: 1