lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]

On Thu, Oct 17, 2019 at 10:34 PM Vinicius Jarina <> wrote:
Hello Russel

NLua will use the current Encoding to convert the Lua string to C# string.

There was a minor issue on NLua where wasn't possible to pass a Lua string to a byte [] parameter on C#.

I've fixed the issue. Here is a example how to pass binary data from Lua side to C# side.

Thank you

That's fantastic. It works seamlessly in my test jig. This is going to be perfect for my serial console!

using System;
using System.Linq;
using NLua;

namespace NLuaConsoleTest
    class Program
        static void Main(string[] args)
            Console.WriteLine("Starting Lua");

            Lua lua = new Lua();
            lua["WriteBinary"] = (Action<byte[]>)WriteBinary;
local t = {0x5aa5, 0x0600}
str = string.pack('<h<h',t[1], t[2])


        private static void WriteBinary(byte[] buffer)
            foreach(var b in buffer)
                Console.WriteLine("{0:X}", b);

Starting Lua


On Thu, Oct 17, 2019 at 8:01 PM Russell Haley <> wrote:

On Thu, Oct 17, 2019 at 1:41 PM Sean Conner <> wrote:
It was thus said that the Great Russell Haley once stated:
> Hi,
> My project is a serial port console written in C# that uses an embedded Lua
> interpreter via NLua. I have a lua script to send a binary messages out the
> serial port. I am using string.pack to create the message. My lua script:
> local bytes = {0x5AA5}

  [ snip ]

> My C# WriteRemote is simple:
>         public void WriteRemote(string data, bool appendLineEnding = true)
>         {
>             if(_logging)
>             {
>                 _scriptLog.WriteLine(data);
>             }
>             data = "" ? data + _lineEnding : data;
>             byte[] bytes = Encoding.UTF8.GetBytes(data);

The string you are generating, 0xA5,0x5A, is not a valid UTF-8 string.
Could that perhaps be the issue?


It very well could be. I'll look into this tomorrow. Thanks Sean!