شكرا لك اخي شهاب
wavelength = 0
pmin_inDb = 0
Detector_rise_time = 0
def user_data(self):
global transemission_distance
global bit_rate
global snr1
global BW
global p_min
global pmin_inDb
global phtodiode
global wavelength
global Detector_rise_time
global Detector_Model
global cHoose_your_system
global enum
global r
global f
enum = 1.6e-19
f = 1
r = 0.5
if self.radioButton.isChecked():
cHoose_your_system = "analog"
print(cHoose_your_system)
transemission_distance = float(self.lineEdit.text())
bit_rate = float(self.lineEdit_2.text())
snr1 = float(self.lineEdit_3.text())
phtodiode = self.comboBox.currentText()
print(f"The phtodiode is: {phtodiode}")
k_power_2 = 10 ** (snr1 / 10)
k_power_2 = round(k_power_2, 2)
p_min = (2 * enum * f * k_power_2 * bit_rate) / r
print(f"The min power= {p_min} W")
pmin_inDb = 10 * math.log10(p_min / 1e-3)
print(f"The min power in dB= {round(pmin_inDb, 2)} dBm")
elif self.radioButton_2.isChecked():
cHoose_your_system = "digital"
print(cHoose_your_system)
transemission_distance = float(self.lineEdit.text())
bit_rate = float(self.lineEdit_2.text())
# desired_ber = float(self.lineEdit_7.text())
# snr1 = float(self.lineEdit_3.text())
phtodiode = self.comboBox.currentText()
print(f"The phtodiode is: {phtodiode}")
# bit_rate = float(input("please enter the desired bitrate: "))
def ber_equation(snr, target_ber):
return (2 / (np.pi * snr)) ** 0.5 * np.exp(-snr / 😎 - target_ber
def find_snr(target_ber):
initial_guess = 60.0 # Initial guess for SNR
snr_solution = fsolve(ber_equation, initial_guess, args=(target_ber,))
return snr_solution[0]
desired_ber = float(self.lineEdit_7.text())
resulting_snr = find_snr(desired_ber)
print(f"SNR for a BER of {desired_ber}: {resulting_snr}")
resulting_snr = round(resulting_snr, 2)
snr1 = 10 * math.log10(resulting_snr)
print("THERESULT", round(snr1, 2))
k_power_3 = float(10 ** (snr1 / 10))
k_power_3 = round(k_power_3, 2)
p_min = float(2 * (enum) * (f) * (k_power_3) * (bit_rate) / r)
print("The min power=", p_min, "W")
pmin_inDb = 10 * (math.log10(p_min / 1e-3))
print("The min power in dB=", round(pmin_inDb, 2), "dB")
# k_power_2 = 10 ** (snr1 / 10)
# k_power_2 = round(k_power_2, 2)
# p_min = (2 * enum * f * k_power_2 * bit_rate) / r
# print(f"The min power= {p_min} W")
# pmin_inDb = 10 * math.log10(p_min / 1e-3)
# print(f"The min power in dB= {round(pmin_inDb, 2)} dBm")
self
if not self.radioButton.isChecked() or not self.radioButton_2.isChecked():
msg = QMessageBox()
msg.setIcon(QMessageBox.Warning)
msg.setText("Please choose a system (Analog or Digital).")
msg.setWindowTitle("Warning")
msg.setStandardButtons(QMessageBox.Ok)
msg.exec_()
# If the user did not make a selection, make them re-enter the system type
self.lineEdit.clear()
self.lineEdit_2.clear()
self.lineEdit_3.clear()
self.lineEdit_7.clear()
self.show()
هذا جزء من الكود الخاص بي الذي يتواجد به المشكلة
اقصد بها 8