basilis_k6 Δημοσ. 17 Ιουλίου 2014 Δημοσ. 17 Ιουλίου 2014 Εχω λιγες γνωσεις προγραμματισμου και δεν ξερω πως να κανω το παρακατω. Εχω ενα δίκτυο rs485 με 20 συσκευές και μια ακομη που απεικονιζει την κατασταση ολων των αλλων. Ενα status panel. Καθε συσκευή στελνει σημα οταν αλλαζει η κατασταση της. Το πανελ ομως θελω να δειχνει μονιμα την κατασταση στην οποια βρισκετε καθε συσκευή. Μπορω με καποιο προγραμμα ετοιμο η μη να παιρνω απο την σειριακη θυρα τις εντολες που στελνουν ολες οι συσκευες και να τις αναπαραγω? Θελω δηλαδη να εχω ενα προγραμμ που παιρνει απο την com1 20 διαφορετικες εντολες και τις αναπαραγει μονο του παλι με εξοδο στην com1. Ομως οταν μια εντολη αλλαξει πρέπει να αλλαζει ολο το "ποιηματάκι" αυτόματα. Οι εντολες αλλαζουν καιε μιση ωρα περιπου αλλα το πανελ για να λειτουργει θελει εντολη καθε μισο λεπτο αλλιως δειχνει τις συσκευες σβυστες.
albNik Δημοσ. 17 Ιουλίου 2014 Δημοσ. 17 Ιουλίου 2014 Θες να φτιαξεις προγραμμα που να Ακουει/Γραφει σε θυρα COM? Mε SerialPort ειναι σχετικα ευκολο να το κάνεις. http://msdn.microsoft.com/en-us/library/system.io.ports.serialport(v=vs.110).aspx
basilis_k6 Δημοσ. 17 Ιουλίου 2014 Μέλος Δημοσ. 17 Ιουλίου 2014 Μπορει να ακουει και να επαναλαμβανει; θα το δοκιμασω ευχαριστώ.
albNik Δημοσ. 17 Ιουλίου 2014 Δημοσ. 17 Ιουλίου 2014 Το τι και (καθε) πότε θα στελνεις στην COM αναλογα με αυτα που δέχεσαι μπορεις να το ορισεις με κωδικα.
basilis_k6 Δημοσ. 17 Ιουλίου 2014 Μέλος Δημοσ. 17 Ιουλίου 2014 Πως θα συνεργαστει το προγραμμα που κανει μονιτορ τις θυρες με το προγραμμα του κωδικα? Υπάρχει καποιο που να κανει και τα δυο; αν ναι, αυτο θελω. Ξέρω να γραφω τετοιο κώδικα.
albNik Δημοσ. 17 Ιουλίου 2014 Δημοσ. 17 Ιουλίου 2014 Ενα θα ειναι το προγραμμα. Το κυριως κομματι θα ειναι μια κλαση με ενα SerialPort member, και στο DataReceived event του θα στέλνεις τα data που θες. class PanelController { SerialPort myPort; public void Initialize() { myPort = new SerialPort("COM1", 57600); myPort.RtsEnable = true; //... myPort.DataReceived += myPort_DataReceived; } void myPort_DataReceived(object sender, SerialDataReceivedEventArgs e) { byte[] data = new byte[myPort.BytesToRead]; myPort.Read(data, 0, data.Length); byte[] dataToSend = Process(data); myPort.Write(dataToSend, 0, dataToSend.Length); }
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα