Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Serial port communication (.NET 2.0)

Îåêßíçóå áðü ôï ìÝëïò dimkasta. Τελευταία δημοσίευση από το μέλος dimkasta στις 10-12-2005, 01:10. Υπάρχουν 5 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  08-12-2005, 02:21 7651

    Serial port communication (.NET 2.0)

    Έχει ασχοληθεί κανείς?

    Έχω πρόβλημα. Μπορώ και στέλνω κανονικά εντολές ΑΤ, αλλά απάντηση παίρνω echo της εντολής...

    Χρησιμοποιώ ένα Τ500ι, συνδεδεμένο στο PC μου μέσω usb irda adaptor, και χρησιμοποιώντας το ircomm2k (www.ircomm2k.de) για να φτιάξω το virtual com port.

    Ο κώδικας που χρησιμοποιώ είναι ο παρακάτω...

    Ξέρω ξέρω το loop πρέπει να αντικατασταθεί από event handler...To έχω έτσι μόνο για testing...

    <FONT size=2>

    using System;

    using System.Data;

    using System.Configuration;

    using System.Collections;

    using System.Web;

    using System.Web.Security;

    using System.Web.UI;

    using System.Web.UI.WebControls;

    using System.Web.UI.WebControls.WebParts;

    using System.Web.UI.HtmlControls;

    using System.IO.Ports;

    public partial class Communication_Sms : System.Web.UI.Page

    {

    SerialPort s;

    protected void Page_Load(object sender, EventArgs e)

    {

    s = new SerialPort("COM4", 9600, Parity.None, 8, StopBits.One);


    s.NewLine = "\n";

    s.DtrEnable = true;

    s.Encoding = System.Text.Encoding.Default;

    s.Handshake = Handshake.RequestToSendXOnXOff;

    s.RtsEnable = true;




    //s.Handshake = Handshake.RequestToSend;

    //s.DataReceived += new SerialDataReceivedEventHandler(s_DataReceived);

     

     

     

    }

    protected void smsSend_Click(object sender, EventArgs e)

    {

    }

    protected void Button2_Click(object sender, EventArgs e)

    {

    }

    protected void send_Click(object sender, EventArgs e)

    {

    String t = "";


    s.Open();

    //s.BreakState = true;

    t += s.BreakState.ToString();

    s.WriteLine( "ATI");

    t += s.CDHolding;

    t += s.CtsHolding;

    bool i = true;


    while (i)

    {

    //t += s.CDHolding;

    //t += s.CtsHolding;

    string a = s.ReadExisting();


    if (a.Length > 0)

    {

    t += a;

    i = false;

    }

    }

    t += s.ReadBufferSize.ToString();

    phoneStatus.Text = t;

    //

    t += s.CDHolding;

    t += s.CtsHolding;

    s.Close();


    }

    private void s_DataReceived(object sender, SerialDataReceivedEventArgs e)

    {

    // Show all the incoming data in the port's buffer

    phoneStatus.Text = s.ReadExisting();

    }

    protected void refresh_Click(object sender, EventArgs e)

    {

     

    }

    }</FONT>


    Simple Photography
  •  08-12-2005, 12:00 7659 σε απάντηση της 7651

    Απ: Serial port communication (.NET 2.0)

    Δοκίμασα τον κώδικα σου τόσο με το IrCOMM2k όσο και με το VSPD XP 5, ένα serial port emulator από την Eltima και δεν είδα τη συμπεριφορά που περιγράφεις. Το πιό πιθανό είναι ότι το τηλέφωνο είναι ρυθμισμένο να κάνει echo ό,τι λαμβάνει. Καλύτερα πάντως να δοκιμάσεις στην αρχή είτε με ένα null-modem είτε με ένα serial port emulator για να βεβαιωθείς ότι ο κώδικάς σου είναι σωστός και δεν φταίει το τηλέφωνο. Από την άλλη, τα Windows από τα 2000 και μετά υποστηρίζουν IrDA. Λογικά θα πρέπει να είναι δυνατή η σύνδεση του τηλεφώνου σου και χωρίς το IrCOMM2k. Μπορείς επίσης να δοκιμάσεις να συνδεθείς με hyperterminal στο τηλέφωνο, αν και δεν μπορείς να έχεις πλήρη έλεγχο του τρόπου σύνδεσης.


    Υπάρχουν μερικά εργαλεία που μπορούν να βοηθήσουν:
    - Υπάρχουν πολλά port emulators αλλά δεν έχω βρει κάποιο open-source/free. Το VSPD XP 5 (http://www.eltima.com/products/vspdxp/) έχει trial για 14 μέρες και επιτρέπει τη δημιουργία ζευγών σειριακών καθώς και τον ορισμό της σύνδεσης μεταξύ των pins.
    - Ένα άλλο χρήσιμο εργαλείο (και τσάμπα) είναι το PortMon της Sysinternals το οποίο πιάνει και δείχνει τις εντολές του λειτουργικού προς τις σειριακές θύρες (http://www.sysinternals.com/Utilities/Portmon.html).

    Τέλος, πρέπει να προσέξεις πως ανοίγεις και κλείνεις τη σειριακή. Αν πας να την ανοίξεις μέσα από μια web σελίδα δεν μπορείς να ελέγξεις ποιός και πόσες φορές θα προσπαθήσει να την ανοίξει. Το αποτέλεσμα θα είναι να την ανοίξει η πρώτη σελίδα που θα εκτελεστεί και οι άλλες να αρχίσουν να ρίχνουν exceptions. Αν πράγματι θέλεις μία web σελίδα να χρησιμοποιήσει τη σειριακή θα πρέπει να φτιάξεις ένα μηχανισμό για να εξασφαλίσεις ότι μόνο μία σελίδα τη φορά θα έχει πρόσβαση στη θύρα. Επίσης θα πρέπει να καθυστερήσει η εκτέλεση της σελίδας μέχρι να πάρεις όλα τα δεδομένα που περιμένεις από τη σειριακή. Αναγκαστικά δεν μπορείς να χρησιμοποιήσεις events καθώς η εκτέλεση της σελίδας θα τελειώσει σχεδόν σίγουρα πριν πάρεις οποιαδήποτε απάντηση από το modem.


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  08-12-2005, 12:43 7662 σε απάντηση της 7659

    Απ: Serial port communication (.NET 2.0)

    ΟΚ μπόρεσα και συνδέθηκα μέσα hyperterminal, κατευθείαν στην Irda χωρίς το ircommport. To κακό είναι ότι όταν δοκίμασα με .ΝΕΤ κατευθείαν στην com του irda μου έβγαζε access denied.


    </SPAN>

    <SPAN class=postbody>Τους χαρακτήρες <cr> και <Ctrl+Z> Πώς τους βάζω?
    Για πείτε λίγο τη σύνταξη για να στείλω SMS.
    Για το <cr> δοκίμασα Control+Enter
    </SPAN>

    <SPAN class=postbody>Για το <Ctrl+Z> Control+Z προφανώς, αλλά βγάζει error...
    K500i είναι το κινητό που πειραματίζομαι μέσω irda<SPAN class=postbody>
    </SPAN>


    Simple Photography
  •  08-12-2005, 14:44 7673 σε απάντηση της 7651

    Απ: Serial port communication (.NET 2.0)

    Αν και δεν είναι ίδια παντού.. here is a list:

    http://www.activexperts.com/activsms/atcommands/nokia/

    Είναι για τα Nokia αλλα απο ότι έχω δεί είναι παρόμοια αν όχι ίδια στα περισσότερα τηλς.
    Παναγιώτης Κεφαλίδης

    "Για να επιτύχεις, θα πρέπει το πάθος σου για την επιτυχία να είναι μεγαλύτερο απο τον φόβο σου για την αποτυχία"

    Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Παρακαλώ διαβάστε τους όρους χρήσης.
  •  08-12-2005, 20:24 7699 σε απάντηση της 7673

    Απ: Serial port communication (.NET 2.0)

    Για δοκίμαστε να επισκευτείς τo ETSI στο Free Download of Standards και να κατεβάσεις το ETSI TS 127 007 V3.13.0 (2003-03) (Χρειάζεται να κάνεις ένα μικρό registration πρώτα). 'Οπως αναφέρεται και στην περίληψη του εγγράφου:

    The present document specifies a profile of AT commands and recommends that this profile be used for controlling Mobile Termination (MT) functions and GSM/UMTS network services from a Terminal Equipment (TE) through Terminal Adaptor (TA). The command prefix +C is reserved for Digital Cellular in ITU-T Recommendation V.25ter [14]. The present document has also the syntax details used to construct these extended GSM/UMTS commands. Commands from ITU-T Recommendation V.25ter [14] and existing digital cellular standards (TIA IS-99 [15] and TIA IS-135 [16]) are used whenever applicable. Some of the new commands are defined such way that they can be easily applied to MT of networks other than GSM/UMTS. ITU-T T.31 [11] and T.32 [12] fax AT commands may be used for GSM/UMTS fax transmission from TE. GSM/UMTS Short Message Service AT commands are defined in 3GPP TS 27.005 [24]. GPRS AT commands are defined in clause 10 of this specification. The present document assumes an abstract architecture comprising a TE (e.g. a computer) and a MT interfaced by a TA (see figure 1)

    Είναι το πρότυπο των ΑΤ εντολών που δέχονται τα κινητά τηλέφωνα. Λίγο ως πολύ όλοι οι κατασκευαστές το υλοποιούν...

     

    George J.

     

     


    George J. Capnias: Χειροπρακτικός Υπολογιστών, Ύψιστος Γκουράρχης της Κουμπουτερολογίας
    w: capnias.org, t: @gcapnias, l: gr.linkedin.com/in/gcapnias
    dotNETZone.gr News
  •  10-12-2005, 01:10 7781 σε απάντηση της 7651

    Απ: Serial port communication (.NET 2.0)

    OK βρήκα άκρη. Έφταιγε το κινητό τελικά, με ΝΟΚΙΑ έπαιξε αμέσως.


    Simple Photography
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems