Convert from C to C # or create a DLL?

I am new to C # programming. I have a program that I modified in C, now I need to take the string array that I get from my C program and pass it to the C # program so that it can query the Oracle database using these values.

This program is used to obtain serial numbers from all 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 try to convert this or just create a C DLL and import it into my C # program? As I said, I really did not work with C #, I am an intern, and my boss gives me this project so that I can learn C #. Any help is appreciated

0
source share
2 answers

c dll #, . #, .

+1

, #, , #. .

# #.

0

All Articles