Perangkat Lunak Kit Latihan HMD

Kit Latihan HMD mencakup alat berikut:

Alat Keterangan
ConnExUtil.exe Alat baris perintah untuk menjalankan fitur HMD Exerciser
HmdKit.cs Kelas C# yang dapat digunakan untuk berbicara dengan HMD Exerciser dari PowerShell atau aplikasi pengujian terkelola

ConnExUtil.exe

ConnExUtil.exe adalah alat baris perintah untuk HMD Exerciser. Alat ini diinstal sebagai bagian dari Paket Perangkat Lunak MUTT. Unduh di sini

Opsi baris perintah yang didukung dijelaskan dalam tabel berikut.

Gunakan huruf besar Opsi Keterangan
Penemuan Perangkat.
Mencantumkan semua perangkat yang tersambung ke MUTT ConnEx-C.
/list Untuk perangkat yang terhubung dengan USB, opsi ini mencantumkan jalur instans perangkat. Untuk perangkat yang terhubung dengan audio, perangkat akan menampilkan Audio. Untuk melihat perangkat audio, gunakan ini dalam kombinasi dengan parameter /all . Mencantumkan dengan indeks berbasis 1 yang dapat digunakan untuk input ke /# parameter .
Pilihan Perangkat.
Pilih semua perangkat yang terhubung ke MUTT ConnEx-C, termasuk audio.
/all Opsional.
Tanpa parameter ini, utilitas membahas perangkat yang terhubung dengan USB. Gunakan parameter ini hanya jika perangkat yang terhubung dengan audio sedang digunakan. Penemuan audio memakan waktu dan dinonaktifkan secara default.
Pilihan Perangkat.
Pilih perangkat tertentu yang terhubung ke MUTT ConnEx-C 'n'.
/#n Opsional.
Input n adalah indeks berbasis 1 dari perangkat yang tersedia yang terhubung ke MUTT ConnEx-C yang dapat dilihat dengan menggunakan parameter /list . Tanpa parameter ini, perilaku defaultnya adalah menjalankan setiap perintah pada semua papan MUTT ConnEx-C.
Atur port USB yang tersambung ke J1 /setPort p Beralih ke port yang ditentukan, p.
Sambungkan port dengan menentukan angka (1-4) atau berdasarkan nama (J2, J3, J4, J6).
0 memutuskan sambungan semua port.
Sambungkan Port USB saat ini ke J1 /getPort Membaca port yang saat ini tersambung.
Membaca port baik dengan menentukan angka (1-4) atau berdasarkan nama (J2, J3, J4, J6).
0 memutuskan sambungan semua port.
Atur port HDMI yang tersambung ke J1 /setHdmiPort p Beralih ke port p yang ditentukan.
Menyambungkan port baik dengan menentukan angka (1-2) atau berdasarkan nama (J2, J3).
0 memutuskan sambungan semua port.
Sambungkan port HDMI saat ini ke J1 /getHdmiPort Membaca port yang saat ini tersambung.
Membaca port baik dengan menentukan angka (1-2) atau berdasarkan nama (J2, J3).
0 memutuskan sambungan semua port.
Membaca informasi amperage/volt /Volt
/Ampli
/versi
Membaca tegangan saat ini.
Membaca amperase saat ini.
Membaca versi perangkat.
Pilih port HMD yang menarik /SetHmd p Pilih port HMD yang menarik ke HMD pada port p.
Mendapatkan kecerahan tampilan saat ini /DisplayBrightness p Mendapatkan kecerahan tampilan p.
Mendapatkan warna tampilan /DisplayColor p Dapatkan warna tampilan p.
Mendapatkan volume RMS saat ini dari HMD /GetVolumeRms Mendapatkan volume RMS saat ini dari headset.
Dapatkan volume puncak dari HMD /GetVolumePeak Mendapatkan volume puncak yang terdeteksi selama jendela sampel.
Mendapatkan volume rata-rata dari HMD /GetVolumeAvg Mendapatkan volume rata-rata dari HMD melalui jendela sampel.
Atur jumlah sampel audio yang akan diambil /SetVolumeSampleCount p Mengatur jumlah sampel, p, untuk dikumpulkan sebelum perintah /GetVolume kembali.
Mengatur sudut servo yang ditentukan /SetServoAngle p q Mengatur sudut servo p ke q derajat.
Aktifkan SuperSpeed /SuperSpeedOn Mengaktifkan SuperSpeed secara global untuk koneksi saat ini dan yang akan datang hingga perintah /SuperSpeedOff dikirim.
SuperSpeed diaktifkan secara default.
Jika SuperSpeed dinonaktifkan, dan port 1 atau 2 tersambung, perintah ini memicu koneksi ulang di SuperSpeed.
Nonaktifkan SuperSpeed /SuperSpeedOff Menonaktifkan SuperSpeed secara global untuk koneksi saat ini dan yang akan datang hingga perintah /SuperSpeedOn dikirim atau perangkat diatur ulang.
Jika SuperSpeed diaktifkan dan port 1 atau 2 tersambung, perintah ini memicu koneksi ulang dengan baris SuperSpeed dinonaktifkan.
Mengatur penundaan perintah /setDelay t Mengatur penundaan perintah t dalam detik.
Mengatur penundaan perintah akan menyebabkan perintah /setPort atau /SuperSpeed{On/Off} berikutnya tertunda oleh t detik di mana t berkisar dari 0 hingga 99.
Ini adalah pengaturan satu kali, hanya perintah berikutnya yang tertunda. Mengirim beberapa perintah sebelum timer penundaan kedaluwarsa tidak didukung.
Mengatur batas waktu pemutusan dalam milidetik /setDisconnectTimeout t Mengatur batas waktu pemutusan untuk perintah non-nol /setPort berikutnya. Pada peristiwa sambungkan berikutnya, port hanya akan tetap terhubung untuk t milidetik sebelum memutuskan sambungan. Ini adalah pengaturan satu kali, hanya peristiwa koneksi berikutnya yang akan secara otomatis terputus.
Rentang yang diizinkan adalah dari 0 hingga 9999 ms.
Perintah Batch:
Pengukuran daya output ke file .csv.
/powercsv Menambahkan pengukuran daya dan tanda waktu saat ini ke power.csv Eksekusi pertama membuat power.csv. Pada eksekusi berikutnya menambahkan data ke file ini.
Ganti nama atau hapus file untuk memulai pengambilan data baru. Setiap eksekusi menambahkan baris dengan format berikut: index,time<>>, <volts,amps>><.<
indeks adalah indeks perangkat yang diberikan oleh /list, sehingga beberapa perangkat dapat dipantau secara bersamaan.
waktu adalah tanda waktu mentah dalam detik.
volt dan amp dicatat ke dua tempat desimal.
Data ini dapat diambil dalam jangka waktu yang lama dan diplot dalam aplikasi spreadsheet, lihat skrip cxpower.cmd.
Perintah Batch:
Menjalankan pengujian unit fungsionalitas utama
/test Menguji semua fungsionalitas utama perangkat. Gunakan untuk validasi dasar fungsionalitas perangkat. Jika perintah ini gagal, silakan siklus daya perangkat dan perbarui firmware.
Perintah Batch:
Demo dasar urutan pengalihan port.
/demo d Mengulangi semua port satu kali, dengan penundaan kedua d pada setiap port.
Menulis nomor port, volt, dan amp pada setiap port ke dalam demoresult.txt.

HmdKit.cs

Unduh kode HmdKit.cs dari https://github.com/Microsoft/busiotools/tree/master/hmdvalidationkit

Penggunaan

  • Sertakan HmdKit.cs di aplikasi otomatisasi Anda.
  • Buat instans kelas HmdKit dan panggil findHmdKitDevice untuk memindai port COM untuk HmdKits.
  • Periksa nilai pengembalian findHmdKitDevice atau properti IsPresent.
  • Gunakan metode untuk melakukan tindakan seperti menghubungkan USB/HDMI atau memeriksa kecerahan tampilan.
  • Jika metode mengembalikan false, perangkat mungkin dalam keadaan buruk atau port COM mungkin digunakan oleh aplikasi lain.

Kelas

public class HmdKit : IDisposable
Kelas ini menyediakan akses terkelola ke fungsionalitas Kit Validasi HMD.

Anggota Privat

private const int HmdKitBaudRate = 9600;
Tingkat baud default untuk Serial HMD Kit melalui komunikasi USB adalah 9600 baud.

private const int RetryCount = 3;
Konstanta ini mengontrol jumlah percobaan ulang untuk mengirim perintah.

private const string HmdKitVersion = "01";
Ini adalah string yang dikodekan secara permanen dalam Kit Validasi HMD untuk versi tersebut. Konstanta ini harus cocok dengan versi yang diharapkan dari Kit Validasi HMD.

private const string HmdKitShieldType = "08";
Ini menentukan jenis perisai yang terdeteksi oleh Kit Validasi HMD. Revisi saat ini harus selalu mendeteksi jenis perisai "8".

private const int ResponseTimeDefault = 500;
Ini adalah waktu respons default yang seharusnya memberikan cukup waktu agar perintah sederhana selesai. Gunakan ini untuk perintah yang tidak melibatkan menunggu sesuatu terjadi pada Kit Validasi HMD seperti mengambil sampel audio atau menunggu data sensor.

private const int ResponseTimeColorSensor = 2000;
Kali ini harus menyediakan jendela yang cukup untuk "waktu integrasi" sensor warna TCS agar berlalu dan agar Kit Validasi HMD mengembalikan nilai. Lihat dokumentasi TCS34725 untuk informasi selengkapnya.

private int responseTimeGetVolume = 1000;
Ini adalah nilai non-konstanta yang harus memberikan cukup waktu bagi perintah "GetVolume*" untuk dijalankan untuk jumlah sampel yang ditentukan. Ini akan berubah setiap kali metode SetVolumeSampleCount digunakan.

private SerialPort serialPort;
Ini adalah instans internal port serial yang terpasang pada Kit Validasi HMD.

private Dictionary<string, string> hmdKitCommand = new Dictionary<string, string>();
Kamus ini menerjemahkan nama perintah yang ramah ke string perintah nyata mereka yang akan dikirim melalui kabel ke Kit Validasi HMD.

private object hmdKitLock = new object();
Kunci ini diatur ketika port serial HMD Validation Kit sedang diakses.

private bool isPresent;
Anggota privat ini melacak status enumerasi Kit Validasi HMD.

Konstruktor:

public HmdKit()
Menginisialisasi instans baru kelas HmdKit. Ini memetakan semua nama ramah yang sesuai ke perintah serial mereka bersama dengan menginisialisasi status enumerasi ke false.

Properti:

public bool IsPresent
Mendapatkan nilai yang menunjukkan apakah Kit Validasi HMD dijumlahkan.

Metode:

public void Dispose()
Implementasi antarmuka Buang untuk membuang sumber daya terkelola yang digunakan oleh kelas HmdKit.

public bool FindHmdKitDevice()
Memeriksa semua port serial terbuka untuk Latihan HMD. Mengembalikan true jika Kit HMD yang valid terdeteksi, jika tidak, mengembalikan false.

public void SendCommand(string command, int responseTime, string parameter, out string output)
Mengirim perintah ke HMD Exerciser. Perintah harus kembali dalam responseTime milidetik.

  • command - Perintah untuk mengirim ke Kit HMD. Perintah harus menjadi bagian dari Kamus hmdKitCommand.
  • responseTime - Waktu metode SendCommand harus menunggu respons. Ini bisa lebih lama untuk perintah yang akan membutuhkan lebih banyak waktu.
  • parameter - Parameter untuk perintah yang mengatur port USB, port HDMI, dll. Ini akan ditambahkan ke perintah dan dikirim ke Kit HMD.
  • output - Mengembalikan dengan respons untuk perintah yang perlu mendapatkan informasi dari Kit HMD

public void SendCommand(string command, int responseTime, string parameter = null)
Mengirim perintah ke HMD Exerciser. Perintah harus kembali dalam milidetik responseTime. Kelebihan beban ini tidak memiliki output dan parameter bersifat opsional.

  • command - Perintah untuk mengirim ke Kit HMD. Perintah harus menjadi bagian dari Kamus hmdKitCommand.
  • responseTime - Waktu metode SendCommand harus menunggu respons. Ini bisa lebih lama untuk perintah yang akan membutuhkan lebih banyak waktu.
  • parameter - Parameter opsional untuk perintah yang mengatur port USB, port HDMI, dll. Ini akan ditambahkan ke perintah dan dikirim ke Kit HMD.

public void SetUsbPort(string port)
Mengatur port USB yang tersambung ke J1.

  • port - Port dapat berupa 0,1,2,3,4 atau melalui layar sutra pada PCB: J2,J3,J4, atau J6. Pemetaannya adalah J2=1 J3=2 J4=4 J6=3

public string GetUsbPort()
Mendapatkan port USB yang saat ini terhubung pada HMD Exerciser.Menampilkan port USB yang saat ini tersambung. '0' menunjuk tidak ada port yang terhubung.

public void SetHdmiPort(string port)
Mengatur port HDMI yang saat ini tersambung.

  • port - Port untuk terhubung. Nilai yang valid adalah J2/J3 atau 1/2. J2 dan 1 setara dan J3 dan 2 setara.

public string GetHdmiPort()
Mendapatkan indeks port HDMI yang saat ini terhubung dari HMD Exerciser. Mengembalikan port HDMI yang saat ini tersambung. '0' berarti tidak ada port yang tersambung. Jika tidak, port akan menjadi 2(J2) atau 1(J3)

public void SetServoAngle(string servo, string degrees)
Mengatur sudut servo yang ditentukan dalam derajat.

  • servo - Servo untuk mengatur sudut pada. Lihat layar sutra pada konektor servo Dari HMD Exerciser.
    • 1 Memilih "Servo 1"
    • 2 Memilih "Servo 2"
  • degrees - Posisi derajat untuk bergerak ke dalam sapuan servo. Derajat harus antara 45* dan 135* untuk sebagian besar servo.

public void SetPresence(bool userPresent)
Mengatur LED spoofing kehadiran untuk menenggelamkan sensor kehadiran HMD dengan cahaya (tidak ada kehadiran pengguna) atau kehadiran pengguna spoof.

  • userPresent - Status kehadiran pengguna yang diinginkan
    • true - Kehadiran pengguna di-spoofed dengan meniru pola respons sensor kehadiran IR.
    • false - Kehadiran pengguna "dihapus" dengan membanjiri sensor kehadiran runtime integrasi dengan cahaya IR, menghapus kemampuannya untuk melihat pantulan pola respons.

public string GetDisplayBrightness(int display)
Mendapatkan kecerahan tampilan yang diminta menggunakan sensor warna TCS34725 pada Papan HMD.

Catatan

Ini juga dipengaruhi oleh HMD yang ditetapkan. Lihat SetHmd untuk informasi selengkapnya.

Mengembalikan kecerahan tampilan mentah dari tampilan yang ditunjukkan. Kecerahannya adalah besaran antara 0 dan 65535. Lihat dokumen sensor warna TCS34725 untuk informasi selengkapnya.

  • display - Tampilan untuk membaca warna dari.
    • 0 - Tampilan kiri dari perspektif mengenakan HMD
    • 1 - Tampilan kanan dari perspektif mengenakan HMD

public void GetDisplayColor(int display, out string red, out string green, out string blue)
Mendapatkan nilai warna RGB untuk tampilan yang ditentukan. Warnanya adalah besaran antara 0 dan 65535. Lihat dokumen sensor warna TCS34725 untuk informasi selengkapnya.

  • display - Tampilan untuk membaca warna dari.
    • 0 - Tampilan kiri dari perspektif mengenakan HMD
    • 1 - Tampilan kanan dari perspektif mengenakan HMD
  • red - Keluar param yang mengembalikan besarnya komponen merah dari cahaya yang diterima.
  • green - Keluar param yang mengembalikan besarnya komponen hijau dari cahaya yang diterima.
  • blue - Keluar param yang mengembalikan besarnya komponen biru dari cahaya yang diterima.

public void SetVolumeSampleCount(string samples)
Mengatur jumlah sampel volume yang akan diambil sebelum mengembalikan hasil dari salah satu metode getVolume*. Nilai defaultnya adalah 2048 dan maksnya adalah ULONG_MAX. Laju sampel THe arduino diatur ke 38,4kHz.

  • samples - Jumlah sampel yang akan dikumpulkan sebelum mengembalikan tingkat volume. Satu detik adalah sekitar 40.960 sampel.

public string GetVolumeRms()
Mendapatkan tingkat volume RMS pada jack 1/8" dari latihan HMD melalui sejumlah sampel. Hasilnya adalah antara 0 dan 100*sqrt(2). Jumlah sampel dapat dikonfigurasi menggunakan setVolumeSampleCount. Tingkat volume diperkuat pada PCB untuk memberikan respons rentang penuh (0-5V) melalui sinyal tingkat headphone. Tingkat pusat adalah 2,5V. Mengembalikan volume RMS selama periode sampel yang diberikan pada skala 0-100*sqrt(2), karena volume tidak berpusat pada nol.

public string GetVolumePeak()
Mendapatkan tingkat volume puncak pada jack 1/8" dari latihan HMD melalui sejumlah sampel. Jumlah sampel dapat dikonfigurasi menggunakan setVolumeSampleCount. Tingkat volume diperkuat pada PCB untuk memberikan respons rentang penuh (0-5V) melalui sinyal tingkat headphone. Tingkat pusat adalah 2,5V. Mengembalikan sampel tertinggi selama periode sampel yang diberikan pada skala 0-100.

public string GetVolumeAvg()
Mendapatkan tingkat volume rata-rata pada jack 1/8" dari latihan HMD atas sejumlah sampel. Jumlah sampel dapat dikonfigurasi menggunakan setVolumeSampleCount. Tingkat volume diperkuat pada PCB untuk memberikan respons rentang penuh (0-5V) melalui sinyal tingkat headphone. Tingkat pusat adalah 2,5V. Mengembalikan volume rata-rata selama periode sampel yang diberikan pada skala 0-100.

public void SetHmd(int hmd)
Mengatur port HMD yang akan ditindak lanjuti oleh metode lain. Jika HMD yang menarik dicolokkan ke P1, atur HMD ke 1. jika HMD yang menarik di-lugging ke P2, atur HMD ke 2.

  • hmd - HMD yang Anda inginkan untuk diaplikasikan oleh perintah kecerahan, kehadiran, dan warna.
    • 1 - HMD yang dilampirkan ke port P1
    • 2 - HMD yang dilampirkan ke port P2

public string Volts()
Mendapatkan tegangan VBus dari port USB. Mengembalikan tegangan USB seperti yang ditampilkan pada LCD

public string Amps()
Mendapatkan gambar saat ini oleh port USB yang saat ini dipilih. Mengembalikan saat ini seperti yang ditampilkan pada LCD.

public void SuperSpeed(bool status)
Mengatur port superspeed ke aktif atau nonaktif. Teruskan true untuk mengaktifkan baris superspeed dan false untuk menonaktifkan baris superspeed.

  • status - Status yang diinginkan dari baris SuperSpeed.
    • True -Terhubung
    • False -Terputus

public void CommandDelay(int delay)
Mengatur penundaan dalam detik sebelum perintah yang dikeluarkan berikutnya akan dijalankan.

  • delay - Penundaan dalam detik sebelum perintah berikutnya dikirim ke kit HMD akan dijalankan.

public void DisconnectTimeout(int timeout)
Mengatur batas waktu agar port terputus setelah perintah sambungkan berikutnya dikirim.

  • timeout - Waktu dalam milidetik port akan menunggu untuk memutuskan sambungan setelah perintah sambungkan berikutnya dikirim.

protected virtual void Dispose(bool disposing)
Implementasi antarmuka Buang untuk membuang sumber daya terkelola yang digunakan oleh kelas HmdKit.

  • disposing - Jika benar, sumber daya terkelola akan dibuang.

Contoh Perangkat Lunak

ConnExUtil

Menyambungkan ke HMD pada port HDMI/USB J2

connexutil.exe /SetPort 1
connexutil.exe /SetHDMIPort 1

Atau, gunakan nama port seperti yang dicetak di papan:

connexutil.exe /SetPort J2
connexutil.exe /SetHDMIPort J2 

Putuskan sambungan semua Port HDMI/USB

connexutil.exe /SetPort 0
connexutil.exe /SetHDMIPort 0

Pilih HMD yang dilampirkan ke port P1

connexutil.exe /SetHmd 1

Mendapatkan kecerahan setiap tampilan

connexutil.exe /DisplayBrightness 0
connexutil.exe /DisplayBrightness 1

HmdKit.cs

HmdKit kit = new HmdKit();
kit.FindHmdKitDevice();
if(kit.IsPresent)
{
Console.WriteLine("Found HMD Kit");
for(int i = 0; i <= 4; i++)
{
        kit.SetUsbPort(i.ToString());
        if(i < 3)
        {
        kit.SetHdmiPort(i.ToString());
        }
}
kit.SetHdmiPort("1");
kit.SetUsbPort("1");
kit.SetPresence(true);
kit.SetServoAngle("1", "90");
kit.SetVolumeSampleCount("2048");
kit.SuperSpeed(true);

String r, g, b = "";
Console.WriteLine("\nSelecting HMD 1");
kit.SetHmd(1);
Console.WriteLine("Display 0 brightness: " + kit.GetDisplayBrightness(0));
kit.GetDisplayColor(0, out r, out g, out b);
Console.WriteLine("Display 0 red:" + r + " green:" + g + " blue:" + b);
Console.WriteLine("Display 1 brightness: " + kit.GetDisplayBrightness(1));
kit.GetDisplayColor(1, out r, out g, out b);
Console.WriteLine("Display 1 red:" + r + " green:" + g + " blue:" + b);

Console.WriteLine("\nSelecting HMD 2");
kit.SetHmd(2);
Console.WriteLine("Display 0 brightness: " + kit.GetDisplayBrightness(0));
kit.GetDisplayColor(0, out r, out g, out b);
Console.WriteLine("Display 0 red:" + r + " green:" + g + " blue:" + b);
Console.WriteLine("Display 1 brightness: " + kit.GetDisplayBrightness(1));
kit.GetDisplayColor(1, out r, out g, out b);
Console.WriteLine("Display 1 red:" + r + " green:" + g + " blue:" + b);
Console.WriteLine("Press any key to exit...");
Console.ReadKey();
}