jojos Δημοσ. 19 Μαρτίου 2009 Δημοσ. 19 Μαρτίου 2009 Γεια χαρα.Είμαι νέος στην VIsual Basic .Στέλνω σειριακά από την Visual Basic σε ένα μικροεπεξεργαστή ένα αριθμό που κυμαίνεται από 0 έως 99999.Θέλω όταν εισάγω ένα αριθμό π.χ. 86 να αποστέλλεται ο 00086 .Θέλω δηλαδή να μεταδίδονται πάντα 5 ψηφία.Πώς γίνεται να μπαινουν αυτοματα τα μηδενικά?Ευχαριστώ.
jojos Δημοσ. 19 Μαρτίου 2009 Μέλος Δημοσ. 19 Μαρτίου 2009 Firewalker η εντολή που έχω για την αποστολή του αριθμού είναι:Form1.COMPort.Write(Form1.TextBox1.Text) , όπου στο TextBOx1 εισάγω τον αριθμό.Αν γράψω τώρα Form1.COMPort.Write(Format(Form1.TextBox1.Text,"00000")) μου στέλνει στη σειριακή 00000 και όχι τον αριθμό που έβαλα
firewalker Δημοσ. 19 Μαρτίου 2009 Δημοσ. 19 Μαρτίου 2009 Καλύτερα να δουλεύεις με μεταβλητές. Για παράδειγμα: DIM text_to_send AS STRING DIM text_to_send_formated AS STRING ' Με τις μεταβλητές παίξε λίγο. Δες τι μεταβλητές δέχεται η Format. text_to_send = Form1.TextBox1.Text text_to_send_formated = FORMAT (text_to_send, "0000") msgbox (text_to_send_formated) 'Για να δεις τι σου επιστέφει Form1.COMPort.Write (text_to_send_formated)
jojos Δημοσ. 19 Μαρτίου 2009 Μέλος Δημοσ. 19 Μαρτίου 2009 Το πρόγραμμα δίνει 00000.Πρέπει μαλλον να το ψάξω και αλλο
firewalker Δημοσ. 19 Μαρτίου 2009 Δημοσ. 19 Μαρτίου 2009 Ποια έκδοση της vb; Δες στο help πως συντάσσεται η Format. Τι μεταβλητές θέλει κ.τ.λ. Κάνε το εντελώς απλό σε κάποια άλλη φόρμα: PRINT FORMAT (55, "00000") Θα πρέπει να σου δώσει 00055. Αν είναι .NET θέλει μάλλον PRINT FORMAT (CSng(55), "00000") ή Form1.COMPort.Write(Format(Csng(Form1.TextBox1.Text)),"00000"))
jojos Δημοσ. 19 Μαρτίου 2009 Μέλος Δημοσ. 19 Μαρτίου 2009 Ευχαριστώ Firewalker για την βοήθεια.Τελικά η format θελει σαν πρωτη παράμετρο να ειναι αριθμός έτσι έκανα μία μετατροπή το TextBox.Text σε Integer έκανα την Format η οποία γύρισε το αποτέλεσμα σε string και το έστειλα. Dim text_to_send As Integer Dim text_to_send_formated As String . . . text_to_send = Convert.ToInt32(Form1.TextBox1.Text) text_to_send_formated = Format(text_to_send, "00000") MsgBox(text_to_send_formated) Form1.COMPort.Write(text_to_send_formated) Ευχαριστώ και πάλι
firewalker Δημοσ. 20 Μαρτίου 2009 Δημοσ. 20 Μαρτίου 2009 Τίποτε. Τι καλό φτιάχνεις αν επιτρέπετε; PIC; AVR;
Evgenios1 Δημοσ. 20 Μαρτίου 2009 Δημοσ. 20 Μαρτίου 2009 [αλλο] στη .net εχεις και το maskedtextbox. btw αν ασχολεισαι με Pic πες μου που το αγορασες (αν ειναι μαγαζι) (γτ στο microchip εχει 1-4ευρω και σε αλλα σαϊτ εχει 50-100 , οικογενια f16/f18)
jojos Δημοσ. 20 Μαρτίου 2009 Μέλος Δημοσ. 20 Μαρτίου 2009 PIC.Τους AVr τους αφησα πισω μου εδω και καιρο.Ασχολουμαι με ενα project το οποίο πέρα απο τα άλλα πρέπει να φορτώνει credits σε ενα stick που εφτιαξα με ενα PIC .Για την φορτωση των credit πρεπει να κανω ενα visual προγραμμα.Ετσι επελεξα την Visual Basic την οποία δεν ξέρω καθόλου .Ασε που εχω να βρω πως θα προστατέψω το πρόγραμμα ώστε να μην φορτώνει κανεις αβερτα μοναδες. Evgenios τους PIC τους εχω κανει εισαγωγη μεσω του αντιπροσώπου ,δεν τους πηρα απο καποιο μαγαζι.Δες αν σε συμφερει (τιμη μεταφορικα)να παραγγειλεις απο digikey ή παρόμοιο.
MastroGiannis Δημοσ. 20 Μαρτίου 2009 Δημοσ. 20 Μαρτίου 2009 Γεια σας! Φυσικά φίλε jojos θα μπορούσες να χρησιμοποιήσεις και την Right ως εξής: >Form1.COMPort.Write(Right("00000" & Form1.TextBox1.Text, 5)) Αποτελεί γενικευμένη μέθοδο γεμίσματος στα αριστερά των "fix" αλφαριθμητικών με έναν συγκεκριμένο χαρακτήρα.
jojos Δημοσ. 20 Μαρτίου 2009 Μέλος Δημοσ. 20 Μαρτίου 2009 Βασικα MastroGiannis μου πετάει σφάλμα ο κώδικας που μου έδωσες.Ευχαριστώ πάντως
MastroGiannis Δημοσ. 23 Μαρτίου 2009 Δημοσ. 23 Μαρτίου 2009 Δοκίμασέ το έτσι: >Form1.COMPort.Write(Microsoft.VisualBasic.Right("00000" & Form1.TextBox1.Text, 5)) Αν σου ξαναβγάλει σφάλμα κάν' το έτσι για να δεις σε ποια έκφραση είναι το σφάλμα: >DIM text_to_send AS STRING text_to_send ="00000" & Form1.TextBox1.Text text_to_send = Microsoft.VisualBasic.Right(text_to_send, 5) Form1.COMPort.Write(text_to_send)
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.