Untitled
unknown
plain_text
a year ago
10 kB
3
Indexable
using AnoleAPI;
using System;
using System.IO;
using System.Management;
using System.Security.Policy;
using System.Text;
using System.Windows.Forms;
namespace EvalBoard
{
public partial class Form1 : Form
{
// Log file Path
private string logDirectory = "D:\\Software\\Software\\WINIC\\AnoleTestAPP-BMD\\AnoleTestAPP-BMD\\EvalBoard\\LOG";
private string logFilePath;
// Declaration Of the input variables
public int Offset_write_input;
public int data_write_input;
public int offset_read_input;
public int data_read_output;
public Form1()
{
InitializeComponent();
CreateLog();
}
public void CreateLog()
{
try
{
Directory.CreateDirectory(logDirectory);
logFilePath = Path.Combine(logDirectory, $"Log_{DateTime.Now:yyyyMMdd_HHmmss}.txt");
using (StreamWriter logFile = new StreamWriter(logFilePath, true))
{
logFile.WriteLine("Log created at: " + DateTime.Now);
}
}
catch (Exception ex)
{
Console.WriteLine("Error creating log file: " + ex.Message);
}
}
public void WriteToLog(string message)
{
try
{
using (StreamWriter logFile = new StreamWriter(logFilePath, true))
{
logFile.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + " - " + message);
}
}
catch (Exception ex)
{
Console.WriteLine("Error writing to log: " + ex.Message);
}
}
private void button2_Click(object sender, EventArgs e)
{
WriteToLog("PCI Connect Button Clicked ");
bool driver_status = FPGACommunicationHandler.FPGAInstance.InitializeWinDriver();
MessageBox.Show("Driver status " + driver_status);
WriteToLog("Driver Open Status is " + driver_status);
bool Device_status = FPGACommunicationHandler.FPGAInstance.DeviceOpen();
MessageBox.Show("Device open " + Device_status);
WriteToLog("Device Open Status is " + Device_status);
if (driver_status)
{
string vendorId = "10EE"; // Replace with user-provided vendor ID
string deviceId = "9038"; // Replace with user-provided device ID
Check_Device_Info(vendorId, deviceId);
}
else
{
WriteToLog("Device is not present.");
}
}
private void Eval_Read_Click(object sender, EventArgs e)
{
FPGACommunicationHandler.FPGAInstance.ReadFromFPGARegister(0, offset_read_input, ref data_read_output);
Read_Value_FromPCI.Text = data_read_output.ToString();
}
private void Offset_User_Input_TextChanged(object sender, EventArgs e)
{
//offset_read_input = int.Parse(Offset_User_Input.Text);
}
private void Data_User_Input_TextChanged(object sender, EventArgs e)
{
data_write_input = int.Parse(Data_User_Input.Text);
}
private void Read_Value_FromPCI_TextChanged(object sender, EventArgs e)
{
Read_Value_FromPCI.Text = data_read_output.ToString();
}
private void textBox2_TextChanged(object sender, EventArgs e)
{
// Placeholder for future implementation
}
private void label1_Click(object sender, EventArgs e)
{
// Placeholder for future implementation
}
private void label2_Click(object sender, EventArgs e)
{
// Placeholder for future implementation
}
private void EvalBoard_Write_Click(object sender, EventArgs e)
{
FPGACommunicationHandler.FPGAInstance.WriteToFPGARegister(0, Offset_write_input, data_write_input);
}
/// <summary>
/// Check device information and log it.
/// </summary>
private void Check_Device_Info(string vendorId, string deviceId)
{
try
{
ManagementObjectSearcher deviceSearcher = new ManagementObjectSearcher(
$"SELECT * FROM Win32_PnPEntity WHERE PNPDeviceID LIKE '%{vendorId}%' AND PNPDeviceID LIKE '%{deviceId}%'");
bool deviceFound = false;
using (StreamWriter logFile = new StreamWriter(logFilePath, true))
{
foreach (ManagementObject device in deviceSearcher.Get())
{
deviceFound = true;
string deviceName = (string)device["Name"];
Device_Info.Text = deviceName;
logFile.WriteLine("Device Name: " + device["Name"]);
logFile.WriteLine("Device ID: " + device["DeviceID"]);
logFile.WriteLine("Description: " + device["Description"]);
logFile.WriteLine("Manufacturer: " + device["Manufacturer"]);
logFile.WriteLine();
string deviceIdEscaped = device["DeviceID"].ToString().Replace("\\", "\\\\");
ManagementObjectSearcher driverSearcher = new ManagementObjectSearcher(
$"SELECT * FROM Win32_PnPSignedDriver WHERE DeviceID = '{deviceIdEscaped}'");
foreach (ManagementObject driver in driverSearcher.Get())
{
logFile.WriteLine("Driver Name: " + driver["DeviceName"]);
logFile.WriteLine("Driver Version: " + driver["DriverVersion"]);
logFile.WriteLine("Driver Provider: " + driver["DriverProviderName"]);
logFile.WriteLine("Driver Date: " + driver["DriverDate"]);
logFile.WriteLine();
}
}
if (!deviceFound)
{
logFile.WriteLine("Device not found.");
}
}
}
catch (Exception e)
{
File.AppendAllText(logFilePath, "Error occurred while querying WMI data: " + e.Message + Environment.NewLine);
}
}
/// <summary>
/// Reads 8 KB of data from the FPGA registers.
/// </summary>
public void Read8KData()
{
const int startAddress = 11; // Starting address (offset)
const int endAddress = 8203; // 8 KB = 8192 bytes
const int step = 4; // Increment by 4 bytes (DWORD size)
StringBuilder dataLog = new StringBuilder();
try
{
for (int address = startAddress; address < endAddress; address += step)
{
int data = 0;
FPGACommunicationHandler.FPGAInstance.ReadFromFPGARegister(0, address, ref data);
dataLog.AppendLine($"Address: 0x{address:X8}, Data: 0x{data:X8}");
}
WriteToLog("8 KB Data Read:\n" + dataLog.ToString());
MessageBox.Show("8 KB data read successfully. Check the log for details.");
}
catch (Exception ex)
{
WriteToLog("Error reading 8 KB data: " + ex.Message);
MessageBox.Show("Error occurred while reading 8 KB data.");
}
}
private void read_8kb_data_Click(object sender, EventArgs e)
{
WriteToLog("8 KB Data Read Button Clicked");
Read8KData();
}
private void Reinitialize_PCI_Click(object sender, EventArgs e)
{
WriteToLog("Reinitializing PCI device...");
try
{
// Step 1: Close the PCI device and driver
bool closeStatus = FPGACommunicationHandler.FPGAInstance.CloseDevice();
WriteToLog($"Device close status: {closeStatus}");
// Step 2: Reinitialize the driver
bool driverStatus = FPGACommunicationHandler.FPGAInstance.InitializeWinDriver();
WriteToLog($"Driver reinitialization status: {driverStatus}");
if (!driverStatus)
{
MessageBox.Show("Failed to reinitialize the driver. Check the logs for details.");
return;
}
// Step 3: Reopen the device
bool deviceStatus = FPGACommunicationHandler.FPGAInstance.DeviceOpen();
WriteToLog($"Device reopen status: {deviceStatus}");
if (deviceStatus)
{
MessageBox.Show("PCI device reinitialized successfully.");
}
else
{
MessageBox.Show("Failed to reopen the device. Check the logs for details.");
}
}
catch (Exception ex)
{
WriteToLog("Error during PCI device reinitialization: " + ex.Message);
MessageBox.Show("An error occurred during PCI device reinitialization. Check the logs for details.");
}
}
private void Read_Offset_input_TextChanged(object sender, EventArgs e)
{
offset_read_input = int.Parse(Read_Offset_input.Text);
}
/// <summary>
/// Converts a hexadecimal string to an integer.
/// </summary>
/// <param name="hexString">The hexadecimal string (e.g., "1A3").</param>
/// <returns>The integer value of the hexadecimal string.</returns>
//public int ConvertHexToInt(string hexString)
//{
// // Remove '0x' prefix if it exists, then convert the hex string to an integer
// return Convert.ToInt32(hexString, 16);
//}
}
}Editor is loading...
Leave a Comment