Q:

Convert from C to C#, or make DLL?

I am new to C# programming. I have a program that I modified in C, I now need to take the string array that I get from my C program and pass it to a C# program so that it can query an Oracle database using those values.
This program is used to get the serial numbers from all of the iButton devices connected to the computer.
Here is the C code
// function prototypes
void  UnLoadTMEX(void);
short LoadTMEX(void);

// globals
static FARPROC Get_Version, TMGetTypeVersion, TMEndSession;
static FARPROC TMSetup, TMNext, TMRom, ExtendedStartSession;
static FARPROC TMReadDefaultPort;
long (__fastcall *TMExtendedStartSession)(short,short,void *);

static HINSTANCE hInst;
unsigned char state_buf[5125];

//--------------------------------------------------------------------------
// Main of iSerial64
//
void main(int argc, char **argv)
{
   char refresh,buf[200];
   short flag,i,didsetup=0;
   short ROM[9];
   short PortNum,PortType;
   long SHandle;
   char serialtmp[2], serial[10][17];
   int j = -1;

   // load the TMEX driver and get pointers to functions 
   if (!LoadTMEX())
   {
      printf("ERROR, could not load IBFS64.DLL\n");
      exit(0);
   }

   // load the TMEX driver and get pointers to functions 
   TMReadDefaultPort(&PortNum, &PortType);

   // get the TMEX driver version

   printf("Port number: %d     Port type: %d\n",PortNum,PortType);
   Get_Version(buf);
   printf("Main Driver: %s\n",buf);
   printf("TYPE%d:",PortType);
   if ((short)TMGetTypeVersion(PortType,buf) < 0)
   {
      printf("\nNo Hardware Driver for this type found!\n");
      // Unload the TMEX driver
      UnLoadTMEX();
      exit(0);
   }
   printf(" %s\n\n\n",buf);

   // check the command line
   if (argc > 1)
      PortNum = atoi(argv[1]);

   // check for valid range of PortNum
   if ((PortNum < 1) || (PortNum > 15))
   {
      printf("ERROR, invalid port requested: %d\n",PortNum);
      exit(0);
   }

   // loop to display the rom numbers until key hit
   do
   {
      // get a session handle to the requested port
      SHandle = TMExtendedStartSession(PortNum,PortType,NULL);
      if (SHandle > 0)
      {
         // check to see if TMSetup has been done once
         if (!didsetup)
         {
            flag = (short)TMSetup(SHandle);
            if (flag == 1 || flag == 2)
            {
               printf("TMSetup complete %d\n",flag);
               didsetup = 1;
            }
            else
            {
               printf("ERROR doing setup %d\n",flag);
               break;
            }
         }
         // only get the next rom after setup complete
         else
         {
             //j was added to keep track of the serial number strings
             j++;
             memset(serial[j], 0, strlen(serial[j]));
            flag = (short)TMNext(SHandle,(void far *)&state_buf[0]);
            if (flag > 0)
            {
                ROM[0] = 0;
                flag = (short)TMRom(SHandle, (void far *)&state_buf[0], (short far *)&ROM[0]);
                for (i = 7; i >= 0; i--)
                {
                    //This section was changed from the original
                    //copies raw number into string
                    sprintf(serialtmp, "%02X", ROM[i]);
                    strcat(serial[j], serialtmp);

                }
                printf("%s ", serial[j]);
                printf("\n");

            }
            else
               printf("end of search\n");
         }

         // close the opened session 
         TMEndSession(SHandle);
      }

   } 
   while (flag > 0);

   // Unload the TMEX driver
   UnLoadTMEX();

   printf("iSERIAL64 end\n");
}

//--------------------------------------------------------------------------
// Load the TMEX driver and get a pointers to the functions
//
short LoadTMEX(void)
{
   // attempt to get a SHandle to the TMEX driver
   hInst = LoadLibrary(L"IBFS64.DLL");

   // get a pointer to the function needed by loopit64
   if (hInst != NULL)
   {
      ExtendedStartSession = GetProcAddress(hInst,"TMExtendedStartSession");
      TMEndSession = GetProcAddress(hInst,"TMEndSession");
      TMSetup = GetProcAddress(hInst,"TMSetup");
      TMNext = GetProcAddress(hInst,"TMNext");
      TMRom = GetProcAddress(hInst,"TMRom");
      Get_Version = GetProcAddress(hInst,"Get_Version");
      TMGetTypeVersion = GetProcAddress(hInst,"TMGetTypeVersion");
       TMReadDefaultPort = GetProcAddress(hInst, "TMReadDefaultPort");

      // check to make sure got ALL of the functions needed
      if ((ExtendedStartSession == NULL) || (TMEndSession == NULL) ||
         (TMSetup == NULL) || (TMNext == NULL) ||
         (TMRom == NULL) || (Get_Version == NULL) ||
         (TMGetTypeVersion == NULL) || (TMReadDefaultPort == NULL))
      {
         printf("ERROR, could not get a pointer to all"
                " of the TMEX functions needed\n");
         return 0;
      }
      // get a function pointer that returns a long
      TMExtendedStartSession = (long (__fastcall *)(short,short,void *))ExtendedStartSession;

      return 1;
   }
   else
      return 0;
}

//--------------------------------------------------------------------------
// UnLoad the TMEX driver
//
void UnLoadTMEX(void)
{
   // release the TMEX driver
   FreeLibrary(hInst);
}

Should I attempt to convert this, or just create a C DLL and import that into my C# program? Like I said, I haven't really worked with C#, I'm an intern and my boss is giving me this project so that I can learn C#. Any help is greatly appreciated

A:

If you want use c dll in c# read this article.
But is better that convert the code to c# code because you can manage this code and update the code easily.

