投稿者 魔界の仮面弁士  (社会人) 投稿日時 2017/7/12 12:43:27
> WriteUSART(1023  >> 8);      // 0x03
> delay_ms(50);
> WriteUSART(1023  & 0x00FF);  // 0xFF

65238 から 1023 への復元も、同様のビット操作で行えますよ。

Dim x As UShort = 65283
Dim y As UShort = ((x And &HFFus) << 8) + (x >> 8)   '1023 


UShort(UInt16) ではなく Short(Int16) の場合は、
先に紹介したメソッドを利用できます。

>>  System.Net.IPAddress.HostToNetworkOrder
>>  System.Net.IPAddress.NetworkToHostOrder
>> のメソッドを使うと、Short 値や Integer 値のバイナリ順序を逆転できます。

Dim x As Short = -253
Dim y As Short = System.Net.IPAddress.NetworkToHostOrder(x)  '1023 



> ②受信データが65283(FF 03)となってしまいます。

03-FF の順で渡されているので、Windows 上では &HFF03 になります。

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim bin As Byte() = {&HFE, &HDC, &HBA, &H98, &H76, &H54, &H32, &H10}

    Debug.Print("データ長{0}バイト:{1}", bin.Length, BitConverter.ToString(bin))

    Debug.WriteLine(" -- ToUInt16 -- ")
    For offset = 0 To bin.Length - 2
        Dim us As UShort = BitConverter.ToUInt16(bin, offset)
        Dim dump As String = BitConverter.ToString(bin, offset, 2)
        Debug.Print("{0}バイト目からの2バイト [{1}] は 0x{2:X4} ({2:N0})", offset, dump, us)
    Next

    Debug.WriteLine(" -- ToUInt32 -- ")
    For offset = 0 To bin.Length - 4
        Dim ui As UInteger = BitConverter.ToUInt32(bin, offset)
        Dim dump As String = BitConverter.ToString(bin, offset, 4)
        Debug.Print("{0}バイト目からの4バイト [{1}] は 0x{2:X8} ({2:N0})", offset, dump, ui)
    Next

    Debug.WriteLine(" -- ToUInt64 -- ")
    For offset = 0 To bin.Length - 8
        Dim ul As ULong = BitConverter.ToUInt64(bin, offset)
        Dim dump As String = BitConverter.ToString(bin, offset, 8)
        Debug.Print("{0}バイト目からの8バイト [{1}] は 0x{2:X16} ({2:N0})", offset, dump, ul)
    Next
End Sub


★実行結果★

データ長8バイト:FE-DC-BA-98-76-54-32-10
 -- ToUInt16 -- 
0バイト目からの2バイト [FE-DC] は 0xDCFE (56,574)
1バイト目からの2バイト [DC-BA] は 0xBADC (47,836)
2バイト目からの2バイト [BA-98] は 0x98BA (39,098)
3バイト目からの2バイト [98-76] は 0x7698 (30,360)
4バイト目からの2バイト [76-54] は 0x5476 (21,622)
5バイト目からの2バイト [54-32] は 0x3254 (12,884)
6バイト目からの2バイト [32-10] は 0x1032 (4,146)
 -- ToUInt32 -- 
0バイト目からの4バイト [FE-DC-BA-98] は 0x98BADCFE (2,562,383,102)
1バイト目からの4バイト [DC-BA-98-76] は 0x7698BADC (1,989,720,796)
2バイト目からの4バイト [BA-98-76-54] は 0x547698BA (1,417,058,490)
3バイト目からの4バイト [98-76-54-32] は 0x32547698 (844,396,184)
4バイト目からの4バイト [76-54-32-10] は 0x10325476 (271,733,878)
 -- ToUInt64 -- 
0バイト目からの8バイト [FE-DC-BA-98-76-54-32-10] は 0x1032547698BADCFE (1,167,088,121,787,636,990)



> 送信データは、確かに03 FFの順で送られているのに、なぜここで逆になってしまうのかが理解できません。

ビッグエンディアンなのかリトルエンディアンなのかということで。
http://www.ertl.jp/~takayuki/readings/info/no05.html



> ③これができた後、F2 F0 x1 x2の後に、もう1つy1 y2を送ることを考えています。

後武運を!