1
我喜歡在Windows 10 IoT上使用C#解碼Raspberry Pi上的X10代碼,但我沒有使用RF解碼的經驗,所以這對我來說是一個新領域。C#解碼X10代碼
我碰到this後,我試圖將其轉換成C#代碼,但我沒有成功。有誰知道如何使用C#正確解碼這個X10代碼,或者是否有人能指向我正確的協議規範。
這是我正在使用的代碼,但ValueChanged
事件沒有被調用。
public static void Sniff(uint gpioPinNumb)
{
Task.Run(() => {
using (GpioPin pin = GpioController.GetDefault().OpenPin((int)gpioPinNumb, GpioSharingMode.Exclusive))
{
pin.SetDriveMode(GpioPinDriveMode.Input);
Stopwatch sw = Stopwatch.StartNew();
long elapsedMicrons = 0;
int[] states = new int[67];
int[] durations = new int[67];
uint changeCount = 0;
bool lockPassed = false;
bool isLock = false;
pin.ValueChanged += (GpioPin sender, GpioPinValueChangedEventArgs args) =>
{
elapsedMicrons = sw.ElapsedTicks/10;
sw.Restart();
//Debug.WriteLine(elapsedMicrons);
if (elapsedMicrons > 25000 && !lockPassed && !isLock)
{
//X10 lock started
changeCount = 0;
durations[changeCount++] = (int)elapsedMicrons;
isLock = true;
Debug.WriteLine("Lock Started");
Debug.WriteLine("");
}
else if (isLock)
{
if (changeCount >= durations.Length)
{
isLock = false;
changeCount = 0;
Debug.WriteLine("===============================");
for (int i = 0; i < durations.Length; i++)
{
Debug.Write(durations[i++]);
Debug.Write(" ");
}
Debug.WriteLine("");
}
else
{
durations[changeCount++] = (int)elapsedMicrons;
}
}
};
}
});
}
好吧,這解決了第一個問題,現在究竟如何我interprete這個值?我找不到任何圖案。 –
你可以參考[這個C#庫](https://github.com/genielabs/x10-lib-dotnet)。 –