void Update() { var operationData = AsyncFileUtil.GetFinishedAsyncFileOperationData(); if (operationData != null) { if (asyncFileOperationCallback != null) { asyncFileOperationCallback.Call(operationData); } } }
static int QPYX_EndFileOperationTread_YXQP(IntPtr L_YXQP) { try { ToLua.CheckArgsCount(L_YXQP, 0); AsyncFileUtil.EndFileOperationTread(); return(0); } catch (Exception e_YXQP) { return(LuaDLL.toluaL_exception(L_YXQP, e_YXQP)); } }
static int QPYX_GetFileOperationCount_YXQP(IntPtr L_YXQP) { try { ToLua.CheckArgsCount(L_YXQP, 0); int QPYX_o_YXQP = AsyncFileUtil.GetFileOperationCount(); LuaDLL.lua_pushinteger(L_YXQP, QPYX_o_YXQP); return(1); } catch (Exception e_YXQP) { return(LuaDLL.toluaL_exception(L_YXQP, e_YXQP)); } }
static int QPYX_GetFinishedAsyncFileOperationData_YXQP(IntPtr L_YXQP) { try { ToLua.CheckArgsCount(L_YXQP, 0); AsyncFileOperationData QPYX_o_YXQP = AsyncFileUtil.GetFinishedAsyncFileOperationData(); ToLua.PushObject(L_YXQP, QPYX_o_YXQP); return(1); } catch (Exception e_YXQP) { return(LuaDLL.toluaL_exception(L_YXQP, e_YXQP)); } }
static int EndFileOperationTread(IntPtr L) { try { ToLua.CheckArgsCount(L, 0); AsyncFileUtil.EndFileOperationTread(); return(0); } catch (Exception e) { return(LuaDLL.toluaL_exception(L, e)); } }
static int GetFinishedAsyncFileOperationData(IntPtr L) { try { ToLua.CheckArgsCount(L, 0); AsyncFileOperationData o = AsyncFileUtil.GetFinishedAsyncFileOperationData(); ToLua.PushObject(L, o); return(1); } catch (Exception e) { return(LuaDLL.toluaL_exception(L, e)); } }
static async Task Main(string[] args) { // Using same example as what's described at: // http://hertaville.com/introduction-to-accessing-the-raspberry-pis-gpio-in-c.html var taskSchedulerUtility = new TaskSchedulerUtility(); var fileUtils = new AsyncFileUtil(); var consoleLogger = new ConsoleLogger { IsLoggingErrors = true, IsLoggingInfo = true }; using (var controller = new LinuxPinController(fileUtils, consoleLogger, taskSchedulerUtility)) { var buttonInputPin = controller.GetOrCreateInputPin(17); var button = new Button(buttonInputPin); button.StateChanged += Button_StateChanged; try { var ledPin = controller.GetOrCreateOutputPin(4); controller.StartContinuouslyCheckingInputPins(); for (int i = 0; i < 1000; i++) { //LED stuff stopped worked for some reason. Not sure why. Might need to make sure file is closed first? if (i % 2 == 0) { await ledPin.SetOutputModeAsync(OutputModeType.High); } else { await ledPin.SetOutputModeAsync(OutputModeType.Low); } System.Threading.Thread.Sleep(500); } Console.WriteLine("Done..."); } catch (Exception ex) { Console.WriteLine($"Caught Exception: {ex.Message}"); Console.WriteLine(Environment.NewLine); Console.WriteLine(ex.ToString()); } } }
static void Main() { //Compile with: // dotnet publish ./RaspbianNetCoreDemo -c Release -r linux-arm --self-contained var taskSchedulerUtility = new TaskSchedulerUtility(); var fileUtils = new AsyncFileUtil(); var pinController = new LinuxPinController(fileUtils, taskSchedulerUtility); var ledPin = pinController.GetOrCreateOutputPin(LedPinNumber); BlockingTimer sleepTimer = new BlockingTimer(TimeSpan.FromMilliseconds(100)); LedControl ledControl = new LedControl(ledPin, sleepTimer); //while (true) //{ // ledControl.Blink(); //} var lightSensorDevice = new I2cDevice(I2cDevicePath, LightSensorDeviceAddress); var lightSensor = new APDS9301_LightSensor(lightSensorDevice, APDS9301_LightSensor.MinimumPollingPeriod); while (true) { float currentLuminosity = lightSensor.Luminosity; if (!ledControl.State && currentLuminosity <= OnMinimumLuminosity) { ledControl.Blink(); ledControl.Blink(); ledControl.TurnOnLed(); System.Diagnostics.Debug.WriteLine(currentLuminosity.ToString()); } else if (ledControl.State && currentLuminosity > OnMinimumLuminosity) { ledControl.TurnOffLed(); System.Diagnostics.Debug.WriteLine(currentLuminosity.ToString()); } Thread.Sleep(10); } //TODO: Dispose these somehow // Only care if exception is thrown on startup when the I2C Bus and IO Pins are already setup I guess //lightSensor.Dispose(); //pinController.Dispose(); }
static int AddFileOperationToQueue(IntPtr L) { try { int count = LuaDLL.lua_gettop(L); if (count == 3) { string arg0 = ToLua.CheckString(L, 1); byte[] arg1 = ToLua.CheckByteBuffer(L, 2); string arg2 = ToLua.CheckString(L, 3); AsyncFileUtil.AddFileOperationToQueue(arg0, arg1, arg2); return(0); } else if (count == 4) { string arg0 = ToLua.CheckString(L, 1); byte[] arg1 = ToLua.CheckByteBuffer(L, 2); string arg2 = ToLua.CheckString(L, 3); bool arg3 = LuaDLL.luaL_checkboolean(L, 4); AsyncFileUtil.AddFileOperationToQueue(arg0, arg1, arg2, arg3); return(0); } else if (count == 5) { string arg0 = ToLua.CheckString(L, 1); byte[] arg1 = ToLua.CheckByteBuffer(L, 2); string arg2 = ToLua.CheckString(L, 3); bool arg3 = LuaDLL.luaL_checkboolean(L, 4); string arg4 = ToLua.CheckString(L, 5); AsyncFileUtil.AddFileOperationToQueue(arg0, arg1, arg2, arg3, arg4); return(0); } else { return(LuaDLL.luaL_throw(L, "invalid arguments to method: AsyncFileUtil.AddFileOperationToQueue")); } } catch (Exception e) { return(LuaDLL.toluaL_exception(L, e)); } }
static int QPYX_AddFileOperationToQueue_YXQP(IntPtr L_YXQP) { try { int QPYX_count_YXQP = LuaDLL.lua_gettop(L_YXQP); if (QPYX_count_YXQP == 3) { string QPYX_arg0_YXQP = ToLua.CheckString(L_YXQP, 1); byte[] QPYX_arg1_YXQP = ToLua.CheckByteBuffer(L_YXQP, 2); string QPYX_arg2_YXQP = ToLua.CheckString(L_YXQP, 3); AsyncFileUtil.AddFileOperationToQueue(QPYX_arg0_YXQP, QPYX_arg1_YXQP, QPYX_arg2_YXQP); return(0); } else if (QPYX_count_YXQP == 4) { string QPYX_arg0_YXQP = ToLua.CheckString(L_YXQP, 1); byte[] QPYX_arg1_YXQP = ToLua.CheckByteBuffer(L_YXQP, 2); string QPYX_arg2_YXQP = ToLua.CheckString(L_YXQP, 3); bool QPYX_arg3_YXQP = LuaDLL.luaL_checkboolean(L_YXQP, 4); AsyncFileUtil.AddFileOperationToQueue(QPYX_arg0_YXQP, QPYX_arg1_YXQP, QPYX_arg2_YXQP, QPYX_arg3_YXQP); return(0); } else if (QPYX_count_YXQP == 5) { string QPYX_arg0_YXQP = ToLua.CheckString(L_YXQP, 1); byte[] QPYX_arg1_YXQP = ToLua.CheckByteBuffer(L_YXQP, 2); string QPYX_arg2_YXQP = ToLua.CheckString(L_YXQP, 3); bool QPYX_arg3_YXQP = LuaDLL.luaL_checkboolean(L_YXQP, 4); string QPYX_arg4_YXQP = ToLua.CheckString(L_YXQP, 5); AsyncFileUtil.AddFileOperationToQueue(QPYX_arg0_YXQP, QPYX_arg1_YXQP, QPYX_arg2_YXQP, QPYX_arg3_YXQP, QPYX_arg4_YXQP); return(0); } else { return(LuaDLL.luaL_throw(L_YXQP, "invalid arguments to method: AsyncFileUtil.AddFileOperationToQueue")); } } catch (Exception e_YXQP) { return(LuaDLL.toluaL_exception(L_YXQP, e_YXQP)); } }
void OnApplicationQuit() { AsyncFileUtil.EndFileOperationTread(); }