using System;
using static MAXT.MXFoundation.mxf;
using System.Runtime.InteropServices;
using System.Text;
namespace async_flexsmp_example {
class async_flexsmp {
static void Main(string[] args) {
UInt32 rc = MAXT_SUCCESS;
UInt64 server = 0;
UInt64 rxChannel = 0;
UInt64 txChannel = 0;
UInt64 bufferSize = 0, mxfRxBuffer = 0, mxfTxBuffer = 0;
UInt64 rxAcqStatus = 0;
UInt64 msgCount = 0, byteCount = 0;
#if (LOCAL)
#else
rc =
mxfConnectEthernet(
"192.168.0.1",
"admin",
"admin", Convert.ToUInt64(
false), out server);
#endif
if (rc == MAXT_SUCCESS) {
Console.WriteLine("Initializing ...");
}
if (rc == MAXT_SUCCESS) {
rc =
mxfChannelGet(server, MXF_CLASS_ALL, MXF_SCLASS_RX_CHANNEL, MXF_MODULE_FLEXSMP, 0, out rxChannel);
}
if (rc == MAXT_SUCCESS) {
rc =
mxfChannelGet(server, MXF_CLASS_ALL, MXF_SCLASS_TX_CHANNEL, MXF_MODULE_FLEXSMP, 0, out txChannel);
}
if (rc == MAXT_SUCCESS) {
}
if (rc == MAXT_SUCCESS) {
}
if (rc == MAXT_SUCCESS) {
rc =
mxfAttributeUint64Set(txChannel, KMXF_ASYNCEH_ELECTRICAL_INTERFACE, VMXF_ASYNCEH_ELECTRICAL_INTERFACE_RS485);
}
if (rc == MAXT_SUCCESS) {
}
if (rc == MAXT_SUCCESS) {
}
if (rc == MAXT_SUCCESS) {
}
if (rc == MAXT_SUCCESS) {
}
if (rc == MAXT_SUCCESS) {
}
if (rc == MAXT_SUCCESS) {
}
if (rc == MAXT_SUCCESS) {
}
if (rc == MAXT_SUCCESS) {
}
if (rc == MAXT_SUCCESS) {
}
if (rc == MAXT_SUCCESS) {
}
if (rc == MAXT_SUCCESS) {
}
#if (LOOPBACK)
if (rc == MAXT_SUCCESS) {
}
#endif
if (rc == MAXT_SUCCESS) {
}
if (rc == MAXT_SUCCESS) {
}
if (rc == MAXT_SUCCESS) {
}
if (rc == MAXT_SUCCESS) {
string dataString = "Hello, World!\0";
byte[] dataByte = Encoding.UTF8.GetBytes(dataString);
reserved = 0,
timeTag = 0,
control = 0,
repeatCount = 1,
dataSize = (UInt32)dataByte.Length,
data = new byte[256],
};
Array.Copy(dataByte, txRec.data, dataByte.Length);
IntPtr recPtr = Marshal.AllocHGlobal((int)bufferSize);
Marshal.StructureToPtr(txRec, recPtr, false);
Console.WriteLine("Transmitting ...\n");
Marshal.FreeHGlobal(recPtr);
}
if (rc == MAXT_SUCCESS) {
}
if (rc == MAXT_SUCCESS) {
IntPtr recPtr = IntPtr.Zero;
try {
recPtr = Marshal.AllocHGlobal((int)bufferSize);
}
catch (OutOfMemoryException) {
rc = MAXT_ERROR_MEM;
}
if (rc == MAXT_SUCCESS) {
Console.WriteLine("Receiving ...");
rc =
mxfASYNCEHRxAcqRead(mxfRxBuffer, 1, bufferSize, out rxAcqStatus, out msgCount, out byteCount, recPtr);
if (rc == MAXT_SUCCESS && msgCount == 1) {
Console.WriteLine(
" Timetag: {0} Size: {1}", rxRec.
timeTag, rxRec.
dataSize);
Console.WriteLine(
" String: {0}", Encoding.UTF8.GetString(rxRec.
data, 0, (
int)rxRec.
dataSize));
}
}
if (recPtr != IntPtr.Zero) {
Marshal.FreeHGlobal(recPtr);
}
}
if (rc == MAXT_SUCCESS) {
}
if (rc != MAXT_SUCCESS) {
StringBuilder buffer = new StringBuilder(256);
buffer.Append(string.Format("ERROR # 0x{0:x8}", rc));
}
Console.WriteLine(buffer);
}
Console.WriteLine();
Console.WriteLine("Terminating...");
if (mxfRxBuffer != 0) {
}
if (mxfTxBuffer != 0) {
}
Console.WriteLine();
Console.WriteLine("Press enter to exit");
Console.Read();
return;
}
}
}