Hi all,
I think that the conversion from vb60 code into PB is normally correct. When I click on the button "Send" or "Convert" the application crashed. What do I wrong here. Is that probally the line ware occur this crashed?
or this code?
// This it the complete code for control DDS chip AD9835
// Convert it from vb60 to PB
Can somebody here help me what wrong here when click the button "Send" or "Convert"?
I think that the conversion from vb60 code into PB is normally correct. When I click on the button "Send" or "Convert" the application crashed. What do I wrong here. Is that probally the line ware occur this crashed?
Code:
[COLOR="Blue"][SIZE="4"]CASE %IDC_CMD_SEND '================================================================ 'Private Sub cmdSend_Click() ' Call Command1_Click ' If Option1.Value = True Then ' MSComm1.CommPort = 1 ' Else ' MSComm1.CommPort = 2 ' End If ' MSComm1.PortOpen = True ' MSComm1.Output = Chr(byte1) + Chr(byte2) + Chr(byte3) + Chr(byte4) ' MSComm1.PortOpen = False 'End Sub '================================================================ IF CB.CTLMSG = %BN_CLICKED OR CB.CTLMSG = 1 THEN DIALOG SEND CB.HNDL, %WM_COMMAND, %IDC_CMD_CONVERT, %BN_CLICKED SELECT CASE AS LONG CB.CTL CASE %IDC_OPT_COM1 IF CB.CTLMSG = %BN_CLICKED OR CB.CTLMSG = 1 THEN CONTROL GET CHECK CB.HNDL, %IDC_OPT_COM1 TO blnCOM IF(ISTRUE(blnCOM)) THEN strCom = "COM1" END IF CASE %IDC_OPT_COM2 IF CB.CTLMSG = %BN_CLICKED OR CB.CTLMSG = 1 THEN CONTROL GET CHECK CB.HNDL, %IDC_OPT_COM2 TO blnCOM IF(ISTRUE(blnCOM)) THEN strCom = "COM2" END IF END SELECT 'COMM OPEN strCom AS #hComm 'COMM SEND #hComm, CHR$(byte1) & CHR$(byte2) & CHR$(byte3) & CHR$(byte4) 'COMM CLOSE #hComm END IF[/SIZE][/COLOR]
Code:
[COLOR="blue"][SIZE="4"]CASE %IDC_CMD_INC_1Hz '================================================================== 'Private Sub cmd_Inc_1Hz_Click() ' txt_455kHz.Text = txt_455kHz.Text - 1 ' Call cmd_Convert_Click ' Call cmd_Send_Click 'End Sub '================================================================== IF CB.CTLMSG = %BN_CLICKED OR CB.CTLMSG = 1 THEN LOCAL s AS STRING LOCAL value_text_2 AS LONG CONTROL GET TEXT CB.HNDL, %IDC_TXT_455000HZ TO s value_text_2 = VAL(s) : value_text_2 += 1 CONTROL SET TEXT CB.HNDL, %IDC_TXT_455000HZ, STR$(value_text_2) DIALOG SEND CB.HNDL, %WM_COMMAND, %IDC_CMD_CONVERT, %BN_CLICKED DIALOG SEND CB.HNDL, %WM_COMMAND, %IDC_CMD_SEND, %BN_CLICKED END IF[/SIZE][/COLOR]
// This it the complete code for control DDS chip AD9835
// Convert it from vb60 to PB
Code:
#PBFORMS Created v2.00 '------------------------------------------------------------------------------ ' The first line in this file is a PB/Forms metastatement. ' It should ALWAYS be the first line of the file. Other ' PB/Forms metastatements are placed at the beginning and ' end of "Named Blocks" of code that should be edited ' with PBForms only. Do not manually edit or delete these ' metastatements or PB/Forms will not be able to reread ' the file correctly. See the PB/Forms documentation for ' more information. ' Named blocks begin like this: #PBFORMS BEGIN ... ' Named blocks end like this: #PBFORMS END ... ' Other PB/Forms metastatements such as: ' #PBFORMS DECLARATIONS ' are used by PB/Forms to insert additional code. ' Feel free to make changes anywhere else in the file. '------------------------------------------------------------------------------ #COMPILE EXE #DIM ALL '------------------------------------------------------------------------------ ' ** Includes ** '------------------------------------------------------------------------------ #PBFORMS Begin Includes '#Resource "win10_dds_AD9835_v1.0.pbr" #INCLUDE ONCE "WIN32API.INC" #INCLUDE ONCE "COMMCTRL.INC" #INCLUDE ONCE "PBForms.INC" #PBFORMS End Includes '------------------------------------------------------------------------------ '------------------------------------------------------------------------------ ' ** Constants ** '------------------------------------------------------------------------------ #PBFORMS Begin Constants %IDD_DIALOG1 = 101 %IDC_TXT_50_MHZ = 1004 %IDC_LBL_REF_CLOCK = 1002 %IDC_LBL_SET_FREQ = 1003 %IDC_TXT_455000HZ = 1005 %IDC_FRA_FRAME1 = 1001 %IDC_LBL_DIVIDER = 1006 %IDC_TXT_NO_CONV = 1007 %IDC_CMD_CONVERT = 1008 %IDC_CMD_SEND = 1009 %IDC_CMD_INFO = 1011 %IDC_LBL_COMM_SETTINGS = 1013 %IDC_FRA_COMMUNICATION = 1012 %IDC_OPT_COM1 = 1014 %IDC_OPT_COM2 = 1015 %IDC_FRAME1 = 1016 %IDC_LBL_1HZ = 1031 %IDC_LBL_1kHZ = 1032 %IDC_LBL_10kHz = 1033 %IDC_LBL_100kHz = 1034 %IDC_CMD_INC_1Hz = 1022 %IDC_CMD_DEC_1Hz = 1025 %IDC_CMD_INC_1kHz = 1024 %IDC_CMD_DEC_1kHz = 1026 %IDC_CMD_INC_10kHz = 1027 %IDC_CMD_DEC_10kHz = 1029 %IDC_CMD_INC_100kHz = 1036 %IDC_CMD_DEC_100kHz = 1030 %IDC_LABEL_4 = 1038 %IDC_LABEL9 = 1040 %IDC_LBL_NO_DATA_BYTE_4 = 1039 %IDC_LABEL3 = 1049 %IDC_LABEL10 = 1049 %IDC_LBL_NO_DATA_BYTE_3 = 1041 %IDC_LABEL2 = 1045 %IDC_LBL_NO_DATA_BYTE_2 = 1044 %IDC_LBL_NO_DATA_BYTE_1 = 1047 %IDC_LABEL14 = 1046 %IDC_LABEL15 = 1049 %IDC_LABEL1 = 1048 %IDC_FRA_DIVIDER_REGISTER = 1037 #PBFORMS End Constants '------------------------------------------------------------------------------ '------------------------------------------------------------------------------ ' ** Declarations ** '------------------------------------------------------------------------------ DECLARE CALLBACK FUNCTION ShowDIALOG1Proc() DECLARE FUNCTION ShowDIALOG1(BYVAL hParent AS DWORD) AS LONG #PBFORMS Declarations '------------------------------------------------------------------------------ '------------------------------------------------------------------------------ ' ** Main Application Entry Point ** '------------------------------------------------------------------------------ FUNCTION PBMAIN() PBFormsInitComCtls (%ICC_WIN95_CLASSES OR %ICC_DATE_CLASSES OR _ %ICC_INTERNET_CLASSES) ShowDIALOG1 %HWND_DESKTOP END FUNCTION '------------------------------------------------------------------------------ '------------------------------------------------------------------------------ ' ** CallBacks ** '------------------------------------------------------------------------------ CALLBACK FUNCTION ShowDIALOG1Proc() LOCAL byte4, byte3, byte2, byte1 AS BYTE SELECT CASE AS LONG CB.MSG CASE %WM_INITDIALOG ' Initialization handler CASE %WM_NCACTIVATE STATIC hWndSaveFocus AS DWORD IF ISFALSE CB.WPARAM THEN ' Save control focus hWndSaveFocus = GetFocus() ELSEIF hWndSaveFocus THEN ' Restore control focus SetFocus(hWndSaveFocus) hWndSaveFocus = 0 END IF CASE %WM_COMMAND ' Process control notifications SELECT CASE AS LONG CB.CTL CASE %IDC_CMD_CONVERT LOCAL blnCOM AS LONG IF CB.CTLMSG = %BN_CLICKED OR CB.CTLMSG = 1 THEN '================================================================ 'Dim phasestep As Variant 'Dim divider As Double '================================================================ LOCAL divider AS DOUBLE LOCAL phase_step AS LONG LOCAL str_phase_step AS STRING LOCAL str_divider AS STRING '================================================================ 'phasestep = txt_50MHz.Text * 1000000 / 2 ^ 32 'divider = txt_455kHz.Text / phasestep 'txt_No_Conv.Text = divider '//divider = 16777216 + 256 + 65536 '================================================================ CONTROL GET TEXT CB.HNDL, %IDC_TXT_50_MHZ TO str_phase_step phase_step = VAL(str_phase_step) : phase_step *= 1000000 / 2 ^ 32 CONTROL GET TEXT CB.HNDL, %IDC_TXT_455000HZ TO str_divider divider = VAL(str_divider) : divider /= phase_step CONTROL SET TEXT CB.HNDL, %IDC_TXT_NO_CONV, STR$(divider) '================================================================ 'byte4 = 0 'Do While (byte4 * 16777216) <= divider ' byte4 = byte4 + 1 '//divider = divider - 16777216 'Loop 'byte4 = byte4 - 1 'divider = divider - (byte4 * 16777216) 'lbl_No_Data_Byte4.Caption = byte4 '================================================================ byte4 = 0 DO WHILE((Byte4 * 16777216) <= divider) INCR Byte4 LOOP DECR byte4 divider -= (byte4 * 16777216) CONTROL SET TEXT CB.HNDL, %IDC_LBL_NO_DATA_BYTE_4, STR$(byte4) '================================================================ 'byte3 = 0 'DO WHILE (byte3 * 65536) <= divider ' byte3 = byte3 + 1 'LOOP 'byte3 = byte3 - 1 'divider = divider - (byte3 * 65536) 'lbl_No_Data_Byte3.Caption = byte3 '================================================================ byte3 = 0 DO WHILE((Byte3 * 65536) <= divider) INCR Byte3 LOOP DECR byte3 divider -= (byte3 * 65536) CONTROL SET TEXT CB.HNDL, %IDC_LBL_NO_DATA_BYTE_3, STR$(byte3) '================================================================ 'byte2 = 0 'Do While (byte2 * 256) <= divider ' byte2 = byte2 + 1 'Loop 'byte2 = byte2 - 1 'divider = divider - (byte2 * 256) 'lbl_No_Data_Byte2.Caption = byte2 '================================================================ byte2 = 0 DO WHILE((Byte2 * 256) <= divider) INCR Byte2 LOOP DECR byte2 divider -= (byte2 * 256) CONTROL SET TEXT CB.HNDL, %IDC_LBL_NO_DATA_BYTE_2, STR$(byte2) '================================================================ 'byte1 = CInt(divider) 'lbl_No_Data_Byte1.Caption = byte1 '================================================================ byte1 = CINT(divider) CONTROL SET TEXT CB.HNDL, %IDC_LBL_NO_DATA_BYTE_1, STR$(byte1) END IF CASE %IDC_CMD_SEND '================================================================ 'Private Sub cmdSend_Click() ' Call Command1_Click ' If Option1.Value = True Then ' MSComm1.CommPort = 1 ' Else ' MSComm1.CommPort = 2 ' End If ' MSComm1.PortOpen = True ' MSComm1.Output = Chr(byte1) + Chr(byte2) + Chr(byte3) + Chr(byte4) ' MSComm1.PortOpen = False 'End Sub '================================================================ IF CB.CTLMSG = %BN_CLICKED OR CB.CTLMSG = 1 THEN DIALOG SEND CB.HNDL, %WM_COMMAND, %IDC_CMD_CONVERT, %BN_CLICKED SELECT CASE AS LONG CB.CTL CASE %IDC_OPT_COM1 IF CB.CTLMSG = %BN_CLICKED OR CB.CTLMSG = 1 THEN CONTROL GET CHECK CB.HNDL, %IDC_OPT_COM1 TO blnCOM IF(ISTRUE(blnCOM)) THEN strCom = "COM1" END IF CASE %IDC_OPT_COM2 IF CB.CTLMSG = %BN_CLICKED OR CB.CTLMSG = 1 THEN CONTROL GET CHECK CB.HNDL, %IDC_OPT_COM2 TO blnCOM IF(ISTRUE(blnCOM)) THEN strCom = "COM2" END IF END SELECT 'COMM OPEN strCom AS #hComm 'COMM SEND #hComm, CHR$(byte1) & CHR$(byte2) & CHR$(byte3) & CHR$(byte4) 'COMM CLOSE #hComm END IF CASE %IDC_CMD_INFO IF CB.CTLMSG = %BN_CLICKED OR CB.CTLMSG = 1 THEN MSGBOX "%IDC_CMD_INFO=" + FORMAT$(%IDC_CMD_INFO), _ %MB_TASKMODAL END IF CASE %IDC_CMD_INC_1Hz '================================================================== 'Private Sub cmd_Inc_1Hz_Click() ' txt_455kHz.Text = txt_455kHz.Text - 1 ' Call cmd_Convert_Click ' Call cmd_Send_Click 'End Sub '================================================================== IF CB.CTLMSG = %BN_CLICKED OR CB.CTLMSG = 1 THEN LOCAL s AS STRING LOCAL value_text_2 AS LONG CONTROL GET TEXT CB.HNDL, %IDC_TXT_455000HZ TO s value_text_2 = VAL(s) : value_text_2 += 1 CONTROL SET TEXT CB.HNDL, %IDC_TXT_455000HZ, STR$(value_text_2) DIALOG SEND CB.HNDL, %WM_COMMAND, %IDC_CMD_CONVERT, %BN_CLICKED DIALOG SEND CB.HNDL, %WM_COMMAND, %IDC_CMD_SEND, %BN_CLICKED END IF CASE %IDC_CMD_INC_1kHz '================================================================== 'Private Sub cmd_Inc_1kHz_Click() ' txt_455kHz.Text = txt_455kHz.Text - 1000 ' Call cmd_Convert_Click ' Call cmd_Send_Click 'End Sub '================================================================== IF CB.CTLMSG = %BN_CLICKED OR CB.CTLMSG = 1 THEN CONTROL GET TEXT CB.HNDL, %IDC_TXT_455000HZ TO s value_text_2 = VAL(s) : value_text_2 += 1000 CONTROL SET TEXT CB.HNDL, %IDC_TXT_455000HZ, STR$(value_text_2) DIALOG SEND CB.HNDL, %WM_COMMAND, %IDC_CMD_CONVERT, %BN_CLICKED DIALOG SEND CB.HNDL, %WM_COMMAND, %IDC_CMD_SEND, %BN_CLICKED END IF CASE %IDC_CMD_DEC_1Hz '================================================================== 'Private Sub cmd_Dec_1Hz_Click() ' txt_455kHz.Text = txt_455kHz.Text - 1 ' Call cmd_Convert_Click ' Call cmd_Send_Click 'End Sub '================================================================== IF CB.CTLMSG = %BN_CLICKED OR CB.CTLMSG = 1 THEN 'Text2.Text = Text2.Text - 1 CONTROL GET TEXT CB.HNDL, %IDC_TXT_455000HZ TO s value_text_2 = VAL(s) : value_text_2 -= 1 CONTROL SET TEXT CB.HNDL, %IDC_TXT_455000HZ, STR$(value_text_2) DIALOG SEND CB.HNDL, %WM_COMMAND, %IDC_CMD_CONVERT, %BN_CLICKED DIALOG SEND CB.HNDL, %WM_COMMAND, %IDC_CMD_SEND, %BN_CLICKED END IF CASE %IDC_CMD_DEC_1kHz '================================================================== 'Private Sub cmd_Dec_1kHz_Click() ' txt_455kHz.Text = txt_455kHz.Text - 1000 ' Call cmd_Convert_Click ' Call cmd_Send_Click 'End Sub '================================================================== IF CB.CTLMSG = %BN_CLICKED OR CB.CTLMSG = 1 THEN CONTROL GET TEXT CB.HNDL, %IDC_TXT_455000HZ TO s value_text_2 = VAL(s) : value_text_2 -= 1000 CONTROL SET TEXT CB.HNDL, %IDC_TXT_455000HZ, STR$(value_text_2) DIALOG SEND CB.HNDL, %WM_COMMAND, %IDC_CMD_CONVERT, %BN_CLICKED DIALOG SEND CB.HNDL, %WM_COMMAND, %IDC_CMD_SEND, %BN_CLICKED END IF CASE %IDC_CMD_INC_10kHz '================================================================== 'Private Sub cmd_Inc_10kHz_Click() ' txt_455kHz.Text = txt_455kHz.Text - 10000 ' Call cmd_Convert_Click ' Call cmd_Send_Click 'End Sub '================================================================== IF CB.CTLMSG = %BN_CLICKED OR CB.CTLMSG = 1 THEN CONTROL GET TEXT CB.HNDL, %IDC_TXT_455000HZ TO s value_text_2 = VAL(s) : value_text_2 += 10000 CONTROL SET TEXT CB.HNDL, %IDC_TXT_455000HZ, STR$(value_text_2) DIALOG SEND CB.HNDL, %WM_COMMAND, %IDC_CMD_CONVERT, %BN_CLICKED DIALOG SEND CB.HNDL, %WM_COMMAND, %IDC_CMD_SEND, %BN_CLICKED END IF CASE %IDC_CMD_INC_100kHz '================================================================== 'Private Sub cmd_Incr_100kHz_Click() ' txt_455kHz.Text = txt_455kHz.Text + 100000 ' Call cmd_Convert_Click ' Call cmd_Send_Click '================================================================== IF CB.CTLMSG = %BN_CLICKED OR CB.CTLMSG = 1 THEN CONTROL GET TEXT CB.HNDL, %IDC_TXT_455000HZ TO s value_text_2 = VAL(s) : value_text_2 += 100000 CONTROL SET TEXT CB.HNDL, %IDC_TXT_455000HZ, STR$(value_text_2) DIALOG SEND CB.HNDL, %WM_COMMAND, %IDC_CMD_CONVERT, %BN_CLICKED DIALOG SEND CB.HNDL, %WM_COMMAND, %IDC_CMD_SEND, %BN_CLICKED END IF CASE %IDC_CMD_DEC_10kHz '================================================================== 'Private Sub cmd_Dec_10kHz_Click() ' txt_455kHz.Text = txt_455kHz.Text - 100000 ' Call cmd_Convert_Click ' Call cmd_Send_Click 'End Sub '================================================================== IF CB.CTLMSG = %BN_CLICKED OR CB.CTLMSG = 1 THEN CONTROL GET TEXT CB.HNDL, %IDC_TXT_455000HZ TO s value_text_2 = VAL(s) : value_text_2 -= 10000 CONTROL SET TEXT CB.HNDL, %IDC_TXT_455000HZ, STR$(value_text_2) DIALOG SEND CB.HNDL, %WM_COMMAND, %IDC_CMD_CONVERT, %BN_CLICKED DIALOG SEND CB.HNDL, %WM_COMMAND, %IDC_CMD_SEND, %BN_CLICKED END IF CASE %IDC_CMD_DEC_100kHz '================================================================== 'Private Sub cmd_Dec_100kHz_Click() ' txt_455kHz.Text = txt_455kHz.Text - 100000 ' Call cmd_Convert_Click ' Call cmd_Send_Click '================================================================== IF CB.CTLMSG = %BN_CLICKED OR CB.CTLMSG = 1 THEN CONTROL GET TEXT CB.HNDL, %IDC_TXT_455000HZ TO s value_text_2 = VAL(s) : value_text_2 -= 100000 CONTROL SET TEXT CB.HNDL, %IDC_TXT_455000HZ, STR$(value_text_2) DIALOG SEND CB.HNDL, %WM_COMMAND, %IDC_CMD_CONVERT, %BN_CLICKED DIALOG SEND CB.HNDL, %WM_COMMAND, %IDC_CMD_SEND, %BN_CLICKED END IF END SELECT END SELECT END FUNCTION
Comment