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

raibeck 0 Ansehenspunkte
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

Visual Studio
Visual Studio
Eine Familie von Microsoft-Sammlungen integrierter Entwicklungstools zum Erstellen von Anwendungen für Windows, das Web und mobile Geräte.
22 Fragen
C#
C#
Eine objektorientierte und typsichere Programmiersprache, die ihre Wurzeln in der C-Sprachenfamilie hat und die komponentenorientierte Programmierung unterstützt
11 Fragen
VB
VB
Eine objektorientierte Programmiersprache, die von Microsoft entwickelt wurde und im .NET Framework implementiert ist. Zuvor als Visual Basic .NET bekannt.
3 Fragen
0 Kommentare Keine Kommentare
{count} Stimmen

5 Antworten

Sortieren nach: Sehr hilfreich
  1. Dimitar Denkov (Convergys Corporation) 885 Ansehenspunkte Microsoft Vendor
    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

  2. raibeck 0 Ansehenspunkte
    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 Ansehenspunkte
    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

  4. raibeck 0 Ansehenspunkte
    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 Ansehenspunkte
    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}