Επιτέλους, τα κατάφερα!

Το OpenNETCF.IO.Serial δουλεύει άψογα!

Σας αναφέρω την λύση για όποιον ενδιαφέρεται:
Κατεβάστε το OpenNETCF.IO.Serial.zip από εδώ:
http://serial.codeplex.com/Release/ProjectReleases.aspxΞεκινήστε ένα νέο Project με VC# ή VB.
Δώστε στην φόρμα τις διαστάσεις της συσκευής σας (πχ 240x320 ή 480x272).
Αποθηκεύστε το!
Αποσυμπιέστε το OpenNETCF.IO.Serial.zip στον φάκελο που κάνατε save το project σας.
Από το μενού File επιλέξτε Add -> Existing Project...
Πηγαίνετε στον φάκελο του project σας και κάντε διπλό κλικ στο αρχείο OpenNETCF.IO.Serial.csproj.
Θα σας βγάλει ένα μήνυμα (δεν ξέρω γιατί) επιλέξτε Yes.
Από δεξιά (Solution Explorer) κάντε δεξί κλικ στο OpenNETCF.IO.Serial και επιλέξτε Build (Μη τρομάξετε με τα Warnings).
Τώρα κάντε δεξί κλικ στο Project σας (πάλι απ' το Solution Explorer) και επιλέξτε Add Reference...
Από την καρτέλα Projects κάντε διπλό κλικ στο OpenNETCF.IO.Serial.
Αυτό ήταν, είστε έτοιμοι!
Σας δίνω ένα παράδειγμα γραμμένο σε Visual Basic:
Βάλτε στην φόρμα 3 κουμπιά (Button1, Button2, Button3) και ένα TextBox (TextBox1).
Στα Properties του TextBox1 επιλέξτε Multiline = True και μεγαλώστε το TextBox στο ύψος (σχεδόν σε όλο το παράθυρο).
Τώρα θα πρέπει να βάλετε ένα Timer (Timer1) απ' το οποίο θα διαβάζουμε την θύρα του GPS.
Μπείτε στον κώδικα και κάντε copy/paste τα παρακάτω και είστε έτοιμοι:
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 | Imports System.Text Imports OpenNETCF.IO.Serial
Public Class Form1 Dim MyPort As Port Dim IncomingData As String = ""
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Me.Text = "Read GPS Sample" Button1.Text = "Open COM" Button2.Text = "Close COM" Button3.Text = "Exit"
MyPort = New Port("COM7:") ' Εδώ βάλτε τη θύρα του GPS.
MyPort.RThreshold = 1 ' get an event for every 1 byte received MyPort.InputLen = 1 ' calling Input will read 1 byte MyPort.SThreshold = 1 ' send 1 byte at a time
Timer1.Enabled = True End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Try TextBox1.Text = TextBox1.Text + vbCrLf + "Opening COM Port... " MyPort.Open() TextBox1.Text = TextBox1.Text + "OK!" + vbCrLf Catch ex As Exception TextBox1.Text = TextBox1.Text + vbCrLf + ex.Message + vbCrLf End Try
If MyPort.IsOpen() Then TextBox1.Text = TextBox1.Text + vbCrLf + "COM Port is open!" + vbCrLf End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Try TextBox1.Text = TextBox1.Text + vbCrLf + "Closing COM Port... " MyPort.Close() TextBox1.Text = TextBox1.Text + "OK!" + vbCrLf Catch ex As Exception TextBox1.Text = TextBox1.Text + vbCrLf + ex.Message + vbCrLf End Try
If Not MyPort.IsOpen() Then TextBox1.Text = TextBox1.Text + vbCrLf + "COM Port is closed!" + vbCrLf End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click If MyPort.IsOpen() Then MyPort.Close() MyPort.Dispose() Application.Exit() End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick If Not MyPort.IsOpen() Then Exit Sub
Dim enc As Encoding = Encoding.ASCII 'Display as text Dim inputData As Byte() = New Byte(0) {} Dim I As Integer
For I = 1 To MyPort.InBufferCount inputData = MyPort.Input 'Read the character IncomingData = IncomingData + enc.GetString(inputData, 0, inputData.Length) Next I If IncomingData <> "" Then Try TextBox1.Text = TextBox1.Text + IncomingData IncomingData = String.Empty Catch ex As Exception TextBox1.Text = TextBox1.Text + vbCrLf + ex.Message + vbCrLf End Try End If TextBox1.SelectionStart = TextBox1.Text.Length : TextBox1.ScrollToCaret() 'Scroll TextBox Down End Sub End Class |
Αν τα κάνατε όλα σωστά, θα έχετε το παρακάτω αποτέλεσμα:

Τώρα, αν κάποιος θέλει να το κάνει με Visual C#, μπορεί να
κατεβάσει το SerialCSharp.zip από εδώ:
http://serial.codeplex.com/Release/ProjectReleases.aspxΕυχαριστώ για τον χρόνο σας, το πρόβλημά μου λύθηκε!