Поиск:

Ответ в темуСоздание новой темы Создание опроса
> открытие порта com1, выдает ошибку при открытии порта 
:(
    Опции темы
pettimm
Дата 12.9.2016, 21:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 24.9.2005

Репутация: нет
Всего: 1



Привет всем! Компилятор FASM  выдает ошибку при открытии порта:
пишет: error: invalid address.

код ниже:
Код

invoke CreateFile("COM_1",GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,NULL)




что не правильно или чего не достает?




Это сообщение отредактировал(а) pettimm - 12.9.2016, 22:01
PM MAIL   Вверх
pettimm
Дата 14.9.2016, 11:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 24.9.2005

Репутация: нет
Всего: 1



Похоже синтаксис ему  не нравится,  а вот так  компилятор не выдает ошибки:
Код

 invoke CreateFile,'COM1',GENERIC_READ, 0, NULL,OPEN_EXISTING, 0,NULL



но программа при этом окно открывает, а начинку окна не открывает
и виндовс предлагает отправить отчет об ошибке. Подскажите что еще не так или упущено?. Спасибо.

Это сообщение отредактировал(а) pettimm - 14.9.2016, 11:15
PM MAIL   Вверх
pettimm
Дата 19.9.2016, 13:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 24.9.2005

Репутация: нет
Всего: 1



Какие мысли вам приходят, господа программисты?
PM MAIL   Вверх
500mhz
Дата 20.10.2016, 15:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


шайтан
***


Профиль
Группа: Завсегдатай
Сообщений: 1017
Регистрация: 5.5.2008
Где: Киев / Italy

Репутация: нет
Всего: 14



Полный листинг можно?
Какие инклуды?


--------------------

PM MAIL ICQ   Вверх
pettimm
Дата 24.10.2016, 20:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 24.9.2005

Репутация: нет
Всего: 1



Код

format PE GUI 4.0
entry start

include 'win32a.inc'

IDC_EDIT = 100
IDC_BUTTON = 101
;...................................................................
  ;СЕКЦИЯ ДАННЫХ
section '.data' data readable writeable
   classb db 'static',0
   textb1 db '№1:',0
   textb2 db '№2:',0
   textb3 db '№3:',0
   textb4 db '№3:',0
   textb5 db '№4:',0
   textb6 db '№5:',0
   
  _class       db 'GetNumberClass',0
  _title       db 'ПРИВІТ',0
  text1       db 'точка',0
  _edit        db 'edit',0
  _button      db 'button',0
  _button_tit  db 'НАТИСНИ',0
  _button_tit1  db 'НАТИСНИ_1',0
  _error       db 'Ошибка создания окна',0
  _error_num   db 'Сначала введите число до 8 знаков',0

  wc WNDCLASS 0,WindowProc,0,0,NULL,NULL,NULL,COLOR_BTNFACE+1,NULL,_class
;...........................................................................

section '.data?' data readable writeable

  msg           MSG
  hEdit         dd    ?
  flag          dd    ?
  iVar          dd    ?
  buf           rd    16
;...................................................................  
 ;СЕКЦИЯ КОДА
section '.code' code readable executable

  start:
        invoke  GetModuleHandle,0
        mov     [wc.hInstance],eax
        invoke  LoadIcon,0,IDI_APPLICATION
        mov     [wc.hIcon],eax
        invoke  LoadCursor,0,IDC_ARROW
        mov     [wc.hCursor],eax
        invoke  RegisterClass,wc
        test    eax,eax
        jz      error

        invoke  CreateWindowEx,0,_class,_title,WS_VISIBLE+WS_DLGFRAME+WS_SYSMENU,\
        128,128,756,292,NULL,NULL,[wc.hInstance],NULL
        test    eax,eax
        jz      error

    ;invoke CreateFile,'COM1',GENERIC_READ,0,NULL,OPEN_EXISTING,0,NULL     
       
  msg_loop:
        invoke  GetMessage,msg,NULL,0,0
        cmp     eax,1
        jb      end_loop
        jne     msg_loop
        invoke  TranslateMessage,msg
        invoke  DispatchMessage,msg
        jmp     msg_loop

  error:
        invoke  MessageBox,NULL,_error,NULL,MB_ICONERROR+MB_OK

  end_loop:
        invoke  ExitProcess,[msg.wParam]

proc WindowProc hwnd,wmsg,wparam,lparam
        push    ebx esi edi
        cmp     [wmsg],WM_CREATE
        je      .wmcreate
        cmp     [wmsg],WM_COMMAND
        je      .wmcommand
        cmp     [wmsg],WM_DESTROY
        je      .wmdestroy
  .defwndproc:
        invoke  DefWindowProc,[hwnd],[wmsg],[wparam],[lparam]
        jmp     .ret
 ;................................................. 
  .wmcreate:
;создадим редактор (стиль ES_NUMBER - ждем число)
;.OKNO_1:
       invoke  CreateWindowEx,WS_EX_CLIENTEDGE,_edit, \
              0,WS_VISIBLE+WS_CHILDWINDOW+ES_NUMBER+ES_AUTOHSCROLL+ES_NOHIDESEL,\
              40,40,50,20,[hwnd],IDC_EDIT,[wc.hInstance],NULL
        mov     [hEdit],eax
;дадим ему фокус ввода
    ;    invoke  SetFocus,eax
;ограничимсячислом с 8 знаками
        invoke  SendMessage,[hEdit],EM_SETLIMITTEXT,8,0
   ; это окно-- надпись над окном
  invoke CreateWindowEx,0,classb,textb1,WS_VISIBLE+WS_CHILD+ BS_PUSHBUTTON+WS_TABSTOP,\
         40,10,80,20,[hwnd],1001,[wc.hInstance],0
   ; координаты в основном окне : 40- горизонталь 
    
   ;invoke CreateFile,'COM1',GENERIC_READ,0,NULL,OPEN_EXISTING,0,NULL
  ; invoke CreateFile,'COM1',GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,NULL
 

 ;...................................................... 
 ;OKNO_2:
 ;создадим редактор (стиль ES_NUMBER - ждем число)
       invoke  CreateWindowEx,WS_EX_CLIENTEDGE,_edit, \
              0,WS_VISIBLE+WS_CHILDWINDOW+ES_NUMBER+ES_AUTOHSCROLL+ES_NOHIDESEL,\
              140,40,50,20,[hwnd],IDC_EDIT,[wc.hInstance],NULL
        mov     [hEdit],eax
;дадим ему фокус ввода
        invoke  SetFocus,eax
;ограничимсячислом с 8 знаками
        invoke  SendMessage,[hEdit],EM_SETLIMITTEXT,8,0
; окно- имя окна2
invoke CreateWindowEx,0,classb,textb2,WS_VISIBLE+WS_CHILD+ BS_PUSHBUTTON+WS_TABSTOP,\
         140,10,80,20,[hwnd],1001,[wc.hInstance],0
;...................................................... 
      
        
;////////////////////////////////////////////////////////////////                          
;создадим кнопку
   ; ЧОМУ ВОНА КОНТРОЛЮЄ ТІЛЬКИ ПЕРШЕ ВІКНО????
; KNOPKA1:   
        invoke  CreateWindowEx,0,_button,_button_tit,\
        WS_VISIBLE+WS_CHILDWINDOW+BS_DEFPUSHBUTTON,10,220,100,20,\
        [hwnd],IDC_BUTTON,[wc.hInstance],NULL
        
        
; KNOPKA2:     
     invoke  CreateWindowEx,0,_button,_button_tit1,\
        WS_VISIBLE+WS_CHILDWINDOW+BS_DEFPUSHBUTTON,120,220,100,20,\
        [hwnd],IDC_BUTTON,[wc.hInstance],NULL   
       
  ;....................................
   invoke CreateFile,'COM1',GENERIC_READ,0,NULL,OPEN_EXISTING,0,NULL
   ;....................................................     
       
        
        jmp     .finish
  .wmcommand:
        mov     eax,[wparam]
;нажата кнопка?
        cmp     ax,IDC_BUTTON
        jne     .finish
;получим в EAX число из редактора (flag - флаг корректности, последний параметр 1-знаковое число)
        invoke  GetDlgItemInt,[hwnd],IDC_EDIT,flag,1
        cmp     [flag],1
        je      .numok
;нет числа
        invoke  MessageBox,[hwnd],_error_num,_title,MB_ICONINFORMATION+MB_OK
;дадим фокус редактору
        invoke  SetFocus,[hEdit]
        jmp     .finish
  .numok:
;сохраним в переменной
        mov     [iVar],eax
;получим еще раз, но сейчас как строку

        invoke  GetDlgItemText,[hwnd],IDC_EDIT,buf,16
;выведем

        invoke  MessageBox,[hwnd],buf,_title,MB_OK
;и завершимся

  .wmdestroy:     
        invoke  PostQuitMessage,0
  .finish:     
  
        xor     eax,eax
  .ret:   
        pop     edi esi ebx
        
        ret
       
endp
;......................................................................

;ТАБЛИЦА ИМПОРТА
section '.idata' import data readable writeable

  library kernel32,'KERNEL32.DLL',\
          user32,'USER32.DLL'

  include 'api\kernel32.inc'
  include 'api\user32.inc'



Спасибо за ответ. Ну в этом коде я вставил  invoke CreateFile,'COM1',GENERIC_READ,0,NULL,OPEN_EXISTING,0,NULL

и при запуске ошибки не выдает, но и окно не открывает. Я понимаю что этой одной строчки не достаточно, но подскажите как же правильно написать обработчик прийома байт с компорта  и  вывести байт в окне, спасибо. 

Это сообщение отредактировал(а) pettimm - 24.10.2016, 20:31
PM MAIL   Вверх
Google
  Дата 26.5.2019, 12:32 (ссылка)  





  Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm для Windows/DOS"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm для Windows/Dos | Следующая тема »


 




[ Время генерации скрипта: 0.0846 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.