Σελ. 1 από 2 12 ΤελευταίαΤελευταία
Εμφάνιση 1-15 από 18
  1. #1
    Εγγραφή
    31-01-2009
    Περιοχή
    ν κοσμος
    Ηλικία
    36
    Μηνύματα
    744
    Downloads
    0
    Uploads
    0
    Τύπος
    Other / Άλλο
    Ταχύτητα
    8.191/381
    ISP
    Conn-x OTE
    DSLAM
    ΟΤΕ - Ν. ΣΜΥΡΝΗ
    Router
    Ομορφο σα και
    SNR / Attn
    29,0(dB) / 11/4(dB)
    Γεια. Αναβαθμιζω ενα ραδιοφωνακι πο εχω κανει σε .net. Του εβαλα ενα κοντορλ με το οποιο αλλαζω τους σταθμους, το θαμα ειναι ο,τι το κοντολ ειναι ενας κυκλος, και οι τιμες που περνει ειναι απο -180.0 εως 180.0( μοιρες ) και οι σταθμοι ειναι απο 80 εως 110 (κατι τετιο). Ειπα να το κανω με ifs και να περνω καποιo range πχ if(angle<90&&angle>100) setStation(81.6) αλλα αυτο δε μου κανει γιατι οι σταθμοι ειναι δυναμικοι . Μετα λεω ας το κανω οπως ειναι , αλλα ειναι πολυ δυσκολο να πετυχεις καποιο σταθμο.

    Και τελος λεω να το ποσταρω μπας και παρω καμια ιδεα.

    codes..
    Spoiler:
    Κώδικας:
           <UserControl Height="100" Width="100" x:Name="RadioStationRotateUC">
                <Grid x:Name="RotatedContol">
                    <Ellipse Stroke="Black"/>
                    <Label x:Name="ControlLabel" HorizontalAlignment="Center" VerticalAlignment="Center">Radio</Label>
                    <Ellipse x:Name="RotateButton" Stroke="Black" Fill="Red" HorizontalAlignment="Center" VerticalAlignment="Top" Height="20" Width="20"></Ellipse>
                    <Grid.RenderTransform>
                        <RotateTransform x:Name="rotStation" Angle="0" CenterX="50" CenterY="50"/>
                    </Grid.RenderTransform>
                </Grid>
            </UserControl>
    Κώδικας:
    public partial class Window1 : Window
        {
            public Window1()//temp
            {
                InitializeComponent();
                Rotated += new Action<double>(Window1_Rotated);
                RotateButton.MouseMove += new MouseEventHandler(RotateButton_MouseMove);
                
            }
    
            void Window1_Rotated(double obj)
            {
                ControlLabel.Content = obj;
            }
            event Action<double> Rotated;
            void RotateButton_MouseMove(object sender, MouseEventArgs e)
            {
                if (Mouse.LeftButton == MouseButtonState.Pressed)
                {
                    rotStation.RotateObj(
                        RadioStationRotateUC,
                        RadioStationRotateUC.Height,
                        RadioStationRotateUC.Width);
                    Rotated(rotStation.Angle);
                }
            }
        }
    Κώδικας:
     public static class Ex
        {
            public static void RotateObj(this RotateTransform obj, IInputElement parent, double X, double Y)
            {
                var md = Mouse.GetPosition(parent);
                double x = md.X - X / 2.0;
                double y = -(md.Y - Y / 2.0);
                if (md.X != 0.0)
                    obj.Angle = Math.Atan2(x, y) * (180.0 / Math.PI);
            }
        }

  2. #2
    Εγγραφή
    19-06-2008
    Περιοχή
    127.0.0.1
    Μηνύματα
    1.148
    Downloads
    0
    Uploads
    0
    Τύπος
    ADSL2+
    Ταχύτητα
    14000/700
    ISP
    Conn-x OTE
    Router
    cisco887va+sec-k9
    Path Level
    Fastpath
    Γι'αυτό υπάρχει η αυτόματη αναζήτηση και οι αποθηκευμένες μνήμες
    Η θα καθορίσεις βήμα (π.χ. 500Khz με δυνατότητα μικροσυντονμισμού όμως στα 250Khz) και θα είναι βηματική η κίνηση του "κύκλου" σου (σα να κουμπώνει σε κάποιο κάναβο) και όταν πατά (π.χ.) shift ο χρήστης, θα έχει ξεκλείδωμα του "κουμπώματος".

  3. #3
    Εγγραφή
    31-01-2009
    Περιοχή
    ν κοσμος
    Ηλικία
    36
    Μηνύματα
    744
    Downloads
    0
    Uploads
    0
    Τύπος
    Other / Άλλο
    Ταχύτητα
    8.191/381
    ISP
    Conn-x OTE
    DSLAM
    ΟΤΕ - Ν. ΣΜΥΡΝΗ
    Router
    Ομορφο σα και
    SNR / Attn
    29,0(dB) / 11/4(dB)
    Οι σταθμοι ειναι εικονικοι. ειναι σε ενα xml αρχειο. πχ σταθμος A
    Κώδικας:
    <station>
    <name>A</name>
    <url>mms://123.123.123/A</url>
    <FM>99.9</FM>
    </station>
    Δεν εχω να κανω με Hz
    * Το FM το βρισκω με google

  4. #4
    Εγγραφή
    19-06-2008
    Περιοχή
    127.0.0.1
    Μηνύματα
    1.148
    Downloads
    0
    Uploads
    0
    Τύπος
    ADSL2+
    Ταχύτητα
    14000/700
    ISP
    Conn-x OTE
    Router
    cisco887va+sec-k9
    Path Level
    Fastpath
    Τότε μπορείς να βρείς τα fm (με google) για όλους και να τους ταξινομησεις έτσι, οπότε βρίσκεις και τα "βήματα" που θα κλειδώνει το κυκλικό κοντρόλ σου.
    Αλλά άποψη μου ότι οι μνήμες και τα κουμπάκια +/- είναι πιο βολικά απο κυκλικό κοντρόλ.

  5. #5
    Εγγραφή
    19-10-2004
    Περιοχή
    Ανάμεσα σε Sentry Gun και Dispenser
    Ηλικία
    40
    Μηνύματα
    3.444
    Downloads
    14
    Uploads
    0
    Τύπος
    VDSL2
    Ταχύτητα
    100/10
    ISP
    Vodafone
    Router
    FRITZ!Box 7530
    Αφού θα μοιράσεις 360 μοίρες σε Ν σταθμούς, κάθε σταθμός θα πάρει ένα διάστημα μήκους 360/Ν μοιρών, με τον πρώτο σταθμό να είναι από το -180 ως το -180+360/Ν και τον τελευταίο να αρχίζει στο 180 - 360/Ν και να τελειώνει στο +180.

    Για να μην έχεις overlaps ή κενά σημεία πρέπει τα διαστήματα να είναι ημιανοικτά. Αυτό το αποφασίζεις εσύ: ή τα διαστήματα είναι της μορφής [Χ,Χ+360/Ν) ή της μορφής (Χ,Χ+360/Ν]. Προγραμματιστικά είναι απλό αν το έχεις υπόψιν.

    Για να δεις οι μοίρες που διάλεξε ο χρήστης (έστω m) σε ποιό κουτάκι αντιστοιχούν, λύνεις το:

    m = k * (N/360) -180, ισοδύναμα:
    k=((m+180)*360)/Ν

    Το k το χειρίζεσαι ανάλογα με την επιλογή που έκανες για τα διαστήματα. Νομίζω το απλούστερο είναι να κάνεις αποκοπή για να υλοποιήσεις το [,).

    Πάντως συμφωνώ με τον bxeno: σαν χρήστης αν έπρεπε να πετυχαίνω τόξα 3-4 μοιρών για να διαλέξω σταθμό, μάλλον θα κοίταγα για άλλο πρόγραμμα


    edit: δε το είχα καταλάβει καλα. Το παραπάνω μοιράζει τα τόξα του κύκλου οποιόμορφα στους σταθμούς. Οχι τις συχνότητες ομοιόμορφα στον κύκλο + ένα check για τη τον κοντινότερο σταθμό.
    Τελευταία επεξεργασία από το μέλος Πύρρος : 25-05-09 στις 09:54.
    And how can we win, when fools can be kings ISO-approved?
    [MUSE: Knights of Cydonia]

  6. #6
    Εγγραφή
    31-01-2009
    Περιοχή
    ν κοσμος
    Ηλικία
    36
    Μηνύματα
    744
    Downloads
    0
    Uploads
    0
    Τύπος
    Other / Άλλο
    Ταχύτητα
    8.191/381
    ISP
    Conn-x OTE
    DSLAM
    ΟΤΕ - Ν. ΣΜΥΡΝΗ
    Router
    Ομορφο σα και
    SNR / Attn
    29,0(dB) / 11/4(dB)
    Θα δω αυριο. (το κεφαλι μου εχει μπιφτεκοσει απο τον ηλιο)

  7. #7
    Εγγραφή
    14-11-2004
    Περιοχή
    Νίκαια/Μύκονος
    Ηλικία
    41
    Μηνύματα
    121
    Downloads
    15
    Uploads
    0
    Τύπος
    ADSL2+ Forthnet Full
    Ταχύτητα
    8192/512
    ISP
    Forthnet
    DSLAM
    Forthnet - ΚΟΡΥΔΑΛΛΟΣ
    Router
    Wag 200
    Γουόρνινγκ: Είναι αργά και μπορεί να πω μπαρούφα!

    Έστω πως οι σταθμοί είναι από 80 μέχρι 110... Το κοντρόλ παίρνει τιμές από -180 έως 180. Θέτουμε τις τιμές του κοντρόλ ως Χ και τις τιμές των σταθμών ως Y και λύνουμε την εξίσωση αΧ + β = Υ...

    Δηλαδή το σύστημα:
    ι) -180α +β = 80 και
    ιι) 180α +β = 110

    ι)==> β = 80 + 180α

    ιι) 180α +80 + 180α = 110 <==>
    360α = 110 - 80 <==>
    360α = 30 <==>
    α = 30/360 <==>
    α = 0,083333

    και απο το ιι προκύπτει: β = 80 +180α <==>

    β = 80 + 15

    β = 95

    οπότε έχουμε τον τύπο Υ = 0,08333Χ + 95 που μεταφράζει μοίρες σε συχνότητες


    Με το που γυρίσει και αφήσει ο χρήστης το κοντρόλ, θα παίρνεις τις μοίρες και θα τις περνάς στην απο πάνω εξίσωση για να πάρεις τη συχνότητα που τους αντιστοιχεί. Θα τσεκάρεις τις συχνότητες στο xml αρχείο σου, θα βρίσκεις την κοντινότερη στη συχνότητα που έχει επιλεχθεί στο κοντρόλ και έτσι θα επιλέγεις σταθμό.

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

    Αυτά!
    Video meliora proboque; deteriora sequor...

  8. #8
    Εγγραφή
    19-06-2008
    Περιοχή
    127.0.0.1
    Μηνύματα
    1.148
    Downloads
    0
    Uploads
    0
    Τύπος
    ADSL2+
    Ταχύτητα
    14000/700
    ISP
    Conn-x OTE
    Router
    cisco887va+sec-k9
    Path Level
    Fastpath
    ωχ, ωχ, πολλά νούμερα πέσαν... για τέτοια ώρα... πάω να συνεχίσω τις μπυρες μου και να δω καμιά ταινία

  9. #9
    Εγγραφή
    28-04-2009
    Περιοχή
    Περιστέρι
    Ηλικία
    67
    Μηνύματα
    208
    Downloads
    0
    Uploads
    0
    Ταχύτητα
    6144/848
    ISP
    HOL
    DSLAM
    HOL - ΠΕΡΙΣΤΕΡΙ
    SNR / Attn
    14.5(dB) / 43.2(dB)
    Οι FM είναι από 88.0 – 108.0 δλδ εύρος 20 Μηζ.
    Με βήμα μεταξύ σταθμών 0.1 Μηζ έχουμε 20 * 10 = 200 θέσεις.
    360 μοίρες / 200 θέσεις = 1.8 μοίρες/θέση.
    Μοίρες = (θέση – 88.0) * 10 * 1.8 – 180
    Π.χ. η 88.1 είναι στις –178.2 και η 107.9 στις +178.2.
    Αν θέλεις να ξέρεις από τη θέση κάποιας «βελόνας» στον κύκλο σε ποια συχνότητα είσαι τότε το απλούστερο είναι να εμφανίζεις ένα αριθμητικό («ψηφιακό») display με τη συχνότητα (μετατροπή από μοίρες).

  10. #10
    Εγγραφή
    19-06-2008
    Περιοχή
    127.0.0.1
    Μηνύματα
    1.148
    Downloads
    0
    Uploads
    0
    Τύπος
    ADSL2+
    Ταχύτητα
    14000/700
    ISP
    Conn-x OTE
    Router
    cisco887va+sec-k9
    Path Level
    Fastpath
    Να κάνεις (σχεδόν)ατέρμονη στροφή στο κυκλικό control. Π.χ. δωσε 3600 μοίρες περιστροφή στη μπάντα των fm για να είναι λειτουργικο (και να μην σπάει τα νεύρα του ο χρήστης να πετύχει σταθμό). Επισης καθώς περιστρέφει να εμφανίζει συχνότητα και όνομα σταθμού.
    Τελευταία επεξεργασία από το μέλος bxenos : 25-05-09 στις 12:08.

  11. #11
    Εγγραφή
    28-04-2009
    Περιοχή
    Περιστέρι
    Ηλικία
    67
    Μηνύματα
    208
    Downloads
    0
    Uploads
    0
    Ταχύτητα
    6144/848
    ISP
    HOL
    DSLAM
    HOL - ΠΕΡΙΣΤΕΡΙ
    SNR / Attn
    14.5(dB) / 43.2(dB)
    Θα ήταν ίσως προτιμότερο λειτουργικά να χρησιμοποιήσεις μια οριζόντια μπάρα (88.0 - 108.0) με ενδείξεις και επιπλέον εμφάνιση συχνότητας με μορφή ετικέττας στη θέση του πόντικα.

  12. #12
    Εγγραφή
    31-01-2009
    Περιοχή
    ν κοσμος
    Ηλικία
    36
    Μηνύματα
    744
    Downloads
    0
    Uploads
    0
    Τύπος
    Other / Άλλο
    Ταχύτητα
    8.191/381
    ISP
    Conn-x OTE
    DSLAM
    ΟΤΕ - Ν. ΣΜΥΡΝΗ
    Router
    Ομορφο σα και
    SNR / Attn
    29,0(dB) / 11/4(dB)
    Καλα οκ... Πως δε το σκεφτηκα , ελεος.... Απλη χιαστη!!!
    Κώδικας:
    var temp = rotStation.Angle + 180.0;
                    temp = (temp * maxValue) / 360.0;
                    Rotated(temp);//event
    Εβαλα στο κοντρολ μια property MaxValue και gg.
    Τωρα απλα βαζω στο MaxValue τον πληθος των σταθμων που υπαρχουν...
    Οποις θελει το κοντρολ το εχω εδω
    Spoiler:
    Κώδικας:
    <UserControl x:Class="TempTesterWpf.RotatedControl"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Height="150" Width="150">
       
            <Grid x:Name="RotatedContol" Height="150" Width="150">
                <Ellipse Stroke="Black"/>
                <Label x:Name="ControlLabel" HorizontalAlignment="Center" VerticalAlignment="Center">Radio</Label>
                <Ellipse x:Name="RotateButton" Stroke="Black" Fill="Red" HorizontalAlignment="Center" VerticalAlignment="Top" Height="20" Width="20"></Ellipse>
                <Grid.RenderTransform>
                    <RotateTransform x:Name="rotStation" Angle="0" CenterX="75" CenterY="75"/>
                </Grid.RenderTransform>
         
    </Grid>
    </UserControl>
    Κώδικας:
    #region using...
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Data;
    using System.Windows.Documents;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Windows.Media.Imaging;
    using System.Windows.Navigation;
    using System.Windows.Shapes;
    #endregion
    namespace TempTesterWpf
    {
        /// <summary>
        /// Interaction logic for RotatedControl.xaml
        /// </summary>
        public partial class RotatedControl : UserControl
        {
    
            public RotatedControl()
            {
                InitializeComponent();
                MaxValue = 100;
                Rotated += new Action<double>(RotatedControl_Rotated);
                RotateButton.MouseMove += delegate
                {
                    if (Mouse.LeftButton == MouseButtonState.Pressed)
                    {
                        rotStation.RotateObj(
                            this,
                            this.Height,
                            this.Width);
                        var temp = rotStation.Angle + 180.0;
                        temp = (temp * MaxValue) / 360.0;
                        Rotated(temp);
    
                    }
                };
            }
            void RotatedControl_Rotated(double obj)
            {
            }
            public event Action<double> Rotated;
            public double MaxValue { get; set; }
            
    
        }
        public static class Ex
        {
            public static void RotateObj(this RotateTransform obj, IInputElement parent, double X, double Y)
            {
                var md = Mouse.GetPosition(parent);
                double x = md.X - X / 2.0;
                double y = -(md.Y - Y / 2.0);
                if (md.X != 0.0)
                    obj.Angle = Math.Atan2(x, y) * (180.0 / Math.PI);
            }
        }
    }

  13. #13
    Εγγραφή
    28-04-2009
    Περιοχή
    Περιστέρι
    Ηλικία
    67
    Μηνύματα
    208
    Downloads
    0
    Uploads
    0
    Ταχύτητα
    6144/848
    ISP
    HOL
    DSLAM
    HOL - ΠΕΡΙΣΤΕΡΙ
    SNR / Attn
    14.5(dB) / 43.2(dB)
    [QUOTE=Παπι;2838789]Καλα οκ... Πως δε το σκεφτηκα , ελεος.... Απλη χιαστη!!!

    Δεν το σκέφτηκες -ίσως- γιατί σε ... είχε μπιφτεκιάσει ο ήλιος, όπως ο ίδιος ομολόγησες...
    Καλή δύναμη

  14. #14
    Εγγραφή
    06-01-2007
    Ηλικία
    39
    Μηνύματα
    83
    Downloads
    0
    Uploads
    0
    Χμ να και κάτι ενδιαφέρον. Είχε χρειαστεί κι εγώ να κάνω κάτι παρόμοιο μόνο που εγώ ήθελα ανεμολόγιο i.e. κάθε μοίρα και επιλογή. Προσωπικά έφτιαξα μια κλάση Knob η οποία προσομοιώνει τη λογική ενός διακόπτη κυκλικής επιλογής στα πρότυπα αυτού του διακόπτη. Μετά φτιάχνεις ένα CustomControl το οποίο θα ενσωματώσει την αναπαράσταση του διακόπτη. Εκεί κατασκευάζεις ένα αντικείμενο Knob τόσων θέσεων όσες και οι συχνότητες που έχεις διαθέσιμες. Σε κάθε κλικ του χρήστη, ανάλογα σε ποιό ημικύκλιο του διακόπτη έγινε, μειώνεις ή αυξάνεις κατά μία τη θέση του Knob. Τέλος με τριγωνομετρία μπορείς να υπολογίσεις τις συντεταγμένες του άκρου της γραμμής που θέλεις να ζωγραφίσεις. Σημείωσε ότι με αυτό τον τρόπο προάγεις και το reusability του Control: αν μετά θέλεις έναν αντίστοιχο επιλογέα για την ένταση του ήχου τότε μπορείς να χρησιμοποιήσεις το ίδιο Control. Επειδή απέφυγα τις λεπτομέρειες για να μην κουράσω, ό,τι απορία έχεις με ρωτάς.

    EDIT: @Παπι
    Ουπς δεν είδα το spoiler σου... Κάτι τέτοιο εννοώ αλλά όχι ακριβώς. Καλύτερα να κληρονομήσεις την Control και να κάνεις δικό σου paint. Επίσης βάλε και events ώστε τα αντικείμενα που ενδιαφέρονται για την αλλαγή επιλογής να ενημερώνοται εύκολα.
    Τελευταία επεξεργασία από το μέλος αστρομαχητής : 25-05-09 στις 17:54.

  15. #15
    Εγγραφή
    31-01-2009
    Περιοχή
    ν κοσμος
    Ηλικία
    36
    Μηνύματα
    744
    Downloads
    0
    Uploads
    0
    Τύπος
    Other / Άλλο
    Ταχύτητα
    8.191/381
    ISP
    Conn-x OTE
    DSLAM
    ΟΤΕ - Ν. ΣΜΥΡΝΗ
    Router
    Ομορφο σα και
    SNR / Attn
    29,0(dB) / 11/4(dB)
    Εχει event το Rotated (void(double)) .
    το ραδιοφωνακι ειναι αυτο

    και το κοντρολ που θα κουμποσω αυτο

    Το οποιο ζωγραφιζω αυτη τη στιγμη
    Τελευταία επεξεργασία από το μέλος Παπι : 25-05-09 στις 23:03.

Σελ. 1 από 2 12 ΤελευταίαΤελευταία

Παρόμοια Θέματα

  1. Παρκάρισμα σε σταθμούς μετρό
    Από elina_77 στο φόρουμ Εκτός θέματος
    Μηνύματα: 0
    Τελευταίο Μήνυμα: 01-03-08, 22:43
  2. Μηνύματα: 8
    Τελευταίο Μήνυμα: 10-05-07, 16:22
  3. Μηνύματα: 19
    Τελευταίο Μήνυμα: 14-02-07, 01:41
  4. Μηνύματα: 0
    Τελευταίο Μήνυμα: 26-04-05, 00:51

Bookmarks

Bookmarks

Δικαιώματα - Επιλογές

  • Δεν μπορείτε να δημοσιεύσετε νέα θέματα
  • Δεν μπορείτε να δημοσιεύσετε νέα μηνύματα
  • Δεν μπορείτε να αναρτήσετε συνημμένα
  • Δεν μπορείτε να επεξεργαστείτε τα μηνύματα σας
  •  
  • Τα BB code είναι σε λειτουργία
  • Τα Smilies είναι σε λειτουργία
  • Το [IMG] είναι σε λειτουργία
  • Το [VIDEO] είναι σε λειτουργία
  • Το HTML είναι εκτός λειτουργίας