Freigeben über

Stuck in INT to HEX (a MIDI Problem 0-127)

raibeck 0 Zuverlässigkeitspunkte
2024-03-02T18:19:47.81+00:00

Hi there,

I have string "F0 41 6A 10 "[look at that space] & " aa bb cc dd "[address of the controller] & " xx yy" [xx is the ~Name of the Ctlr~ yy the Value... as in MIDI we always speak fom 0-127 = 0x00- 0x7f]-

I just cant get my Trackbars/Slider/Fader-Values into like 1="01" or 127="7F" with two digits.

But I need them, coz the Sytnth needs a checksum from all sended msg´s

How can I jaust format a 1 to "01" a niullnullzero to "00" and a 10 to "0A"??

know this is silly, but gets me crazy

Greets and a happy Spring begin

Ray

Entwicklertechnologien | VB
Entwicklertechnologien | Visual Studio | Andere
Entwicklertechnologien | C#
0 Kommentare Keine Kommentare
{count} Stimmen

5 Antworten

Sortieren nach: Am hilfreichsten
  1. Dimitar Denkov 1,665 Zuverlässigkeitspunkte
    2024-03-03T20:00:58.7266667+00:00

    Hallo Ray,

    Da Du Deine Frage in den deutschsprachigen Q&A gestellt hast, antworte ich auf Deutsch. Rufe ToString() mit X2 als Parameter auf, in etwa so:

    You have posed your question in the German-language Q&A. Please let us know, if you have difficulties with written German. Try passing X2 as parameter to ToString(), like this:

        int i = 127;
        string z = i.ToString("X2");
        Console.WriteLine(z);   // 7F
    

    Siehe dazu den Artikel über standardmäßige Zahlenformatzeichenfolgen, Abschnitt Spezifizierer für Hexadezimalformat:

    Refer to this section:

    https://learn.microsoft.com/en-us/dotnet/standard/base-types/standard-numeric-format-strings#hexadecimal-format-specifier-x

    Gruß,

    Dimitar

    0 Kommentare Keine Kommentare

  2. raibeck 0 Zuverlässigkeitspunkte
    2024-03-04T11:04:46.28+00:00

    Hallo Dimitar,

    "X2" ist mir durchaus bekannt.

    "Es will aber nicht" -keine besonders gute Beschreibung / und (jaja ich weiss...) macht es nicht besser-

    Der String ~strSystemExclusive~ wird aus sehr vielen Faders/Slider/Drehknöppfen/TextBoxen und Dropdowns befüllt. Ich habe soweit möglich die Befehle pro Event einzeln hardcodiert. Jeder MidiController hat jetzt sein eigenes Press/Change/KeyIrgendwas Event. Es läuft ja auch---

    aber wenn ich einen "One-Digit" Wert habe wie "1", "A", "F" kommt die Meldun "unable to covert into Short",

    Wahrscheinlich liegt hier der Hund begraben

        Dim sys() As String = Split(strCommand, " ")
    
    Dim check(sys.ength) As Int16
    
        Try
    
            For m As Int16 = 5 To sys.Length - 3
                 sys(m) = sys(m)
    
                check(m) = Convert.ToInt32(sys(m), 16)
    
            Next
    
        Catch ex As Exception
    
            MessageBox.Show("Checksum Error (Prüfsuume ZERLEGEN): " & vbCrLf & strCommand & vbCritical & vbCrLf & ex.Source & ex.Message)
    
        End Try
    ```Ich bin echt gerade bisserl perplex
    
    [Edit: Typo in SourceCode]
    

  3. raibeck 0 Zuverlässigkeitspunkte
    2024-03-04T15:38:39.89+00:00

    Danke auch an Thomas,

    ich bin .NET kleiner Vers.8 und das auch noch in VB (gibts noch)-

    Man geht ja eher zu C# , obschon ... der böse Phython ... er lauert überall.

    Danke euch

    Gruß

    Raimo

    Zuviele hh´s und hh´s phyr den Püton

    0 Kommentare Keine Kommentare

  4. raibeck 0 Zuverlässigkeitspunkte
    2024-03-05T08:25:24.3833333+00:00

    Hallo nochmal,

    es will einfach nicht:

      Dim strGroupID As String = vbNullString
    
      strGroupID = Me.dgvWaves.CurrentRow.Cells("colGrouID").ToString("X2")
    

    -->"Ungültige Konvertierung von der Zeichenfolge X2 in Typ Integer."

    Wo habe ich eine Ganzzahl? Im DGV- befüllt aus SQL-Servern per DataSet-Designer- nicht. Nur Integers und Strings, keine Floats

    Der Wert in Ganzzahl ist korrekt. Das Programm sendet auch an die Synthis (einen habe ich sogar komplett (!) abgekabelt)

    Dümmlicher-/ Klugerweise habe ich mich entschieden den/die Keyboards/Synthies/Workastations nahe am heweiligen CPU zu ändern. Da geht mir jedes Byte mal quer.

    Fehlertolerant sind die meisten Geräte nicht- Und sie antworten selten oder nicht :-)

    LG

    Rai


  5. raibeck 0 Zuverlässigkeitspunkte
    2024-03-07T12:35:06.32+00:00

    Leider habe ich keine Antwort gefunden ToString("X2") will irgendwie nicht mit split und convert

    Ich zerlege den String-Byte-String weiterhin per .StringSplit(" "), das geht - ist aber unsauber (mMn)-

    Da hier überhaupt ! absolut ! keine ! zeitkritische Sachen ablaufen, kann ich damit leben.

    Aber: das kann ich besser, es nervt. grrrr.

    Danke Euch

    Rai

    [Edit: Typo}

    0 Kommentare Keine Kommentare

Ihre Antwort

Fragesteller*innen können Antworten als akzeptierte Antworten markiert werden, wodurch Benutzer*innen wissen, dass diese Antwort das Problem gelöst hat.