реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Плизззз VB\VC++ и ASM51 (нужна программа из 5 строк)
IncreMan
сообщение Apr 4 2006, 14:12
Сообщение #1





Группа: Новичок
Сообщений: 9
Регистрация: 4-04-06
Из: Израиль
Пользователь №: 15 789



Люди добрые, спасите...

Надо написать малюсенькую программу но вот как это реализовать не знаю.

Вот что нужно:
1. На VisualBasic или VisualC++ написать малюсенькую программу в которой будет 2 строки ввода, каждая ограничена до 16 символов. Нажимая на кнопку send инфа из этих строк отправляестья в COM1 порт.

2. На Assembler-51 (для микроконтроллера 8051/31) написать прогу которая будет принимать эту инфу.

Всё это необходимо для того, чтобы отобразить на 2 строчках LCD то, что написали в компе. Программа для вывода на LCD уже есть, осталось вышеперечисленное. Наверное также важно чтобы к строкам в программе на VB или VC++ добавлялся какой-то символ обозначающий для проги на asm-51 что это 1 или 2 строка. Мне сказали что реально реализовать за счёт внутреннего RAM в микроконтроллере 8031, поэтому думаю будет наилучьшим вариантом, запись полученной инфы из компа в адреса RAM, а оттуда будет выдоваться всё на LCD.

Буду признателен любой помощи!!!!
Плиззз, очень надо!!!!


Заранее благодарен!


--------------------
..:: Deeds Talk Loud Than Words ::..
Go to the top of the page
 
+Quote Post
andron86
сообщение Apr 4 2006, 15:32
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 406
Регистрация: 1-03-06
Пользователь №: 14 821



VisualC++ для comporta!!
Проверенно - работает!
Прикрепленные файлы
Прикрепленный файл  COMTOOLS.ZIP ( 7.34 килобайт ) Кол-во скачиваний: 53
 
Go to the top of the page
 
+Quote Post
IncreMan
сообщение Apr 4 2006, 15:38
Сообщение #3





Группа: Новичок
Сообщений: 9
Регистрация: 4-04-06
Из: Израиль
Пользователь №: 15 789



Спасибо, сейчас посмотрю, попытаюсь что-то понять


--------------------
..:: Deeds Talk Loud Than Words ::..
Go to the top of the page
 
+Quote Post
IncreMan
сообщение Apr 4 2006, 15:51
Сообщение #4





Группа: Новичок
Сообщений: 9
Регистрация: 4-04-06
Из: Израиль
Пользователь №: 15 789



Посмотрел, но как адаптировать под то что мне надо не имею представления, можешь подсказать, или помочь?


--------------------
..:: Deeds Talk Loud Than Words ::..
Go to the top of the page
 
+Quote Post
andron86
сообщение Apr 4 2006, 16:06
Сообщение #5


Местный
***

Группа: Участник
Сообщений: 406
Регистрация: 1-03-06
Пользователь №: 14 821



В проект прикрепи С и h файлы из того что скачал. Ну и ипользуй функции ComOpen и ComWrite.
Go to the top of the page
 
+Quote Post
IncreMan
сообщение Apr 4 2006, 16:18
Сообщение #6





Группа: Новичок
Сообщений: 9
Регистрация: 4-04-06
Из: Израиль
Пользователь №: 15 789



Ок, понял то, что ничего не понял, потому как в с++ не соображаю, учил С и то не долго и не много, ты мог бы сделать, если не трудно?


--------------------
..:: Deeds Talk Loud Than Words ::..
Go to the top of the page
 
+Quote Post
andron86
сообщение Apr 4 2006, 16:46
Сообщение #7


Местный
***

Группа: Участник
Сообщений: 406
Регистрация: 1-03-06
Пользователь №: 14 821



А там C++помоему и нету - простой С и API функции.
Тебе тут и надо-то диалоговый проект создать, button и editcontrol положить, ну а потом eventи обработать и всё. Вот тебе ссылка, там есть и VisualC++, думаю сам быстро разберёшся!

Сообщение отредактировал andron86 - Apr 4 2006, 16:47
Go to the top of the page
 
+Quote Post
IncreMan
сообщение Apr 4 2006, 17:20
Сообщение #8





Группа: Новичок
Сообщений: 9
Регистрация: 4-04-06
Из: Израиль
Пользователь №: 15 789



Я только взглянул мне в глазах потемнело.

У меня есть приблизительный код на VB который отправляет эксадецимальное значение, а мне надо не значение а 2 строки по 16 символов, а вот какой функцией перевернуть все 16 символов в ascii код и отправить их по одному не знаю.

Мне больше половины всего кода не надо, надо только 2 поля ввода ограниченных до 16 символов, а при нажатии на send они переводяться в ascii код (потом видимо в hex) и отправляються на com1port!

Вот код который у меня есть:
Код
Public dat As String
Public tim As String
Public CurrentTime As String
Public x, z As Integer

Private Sub Command3_Click()

End Sub

Private Sub Form_Load()
    Timer2.Enabled = True       'Show clock and date'
    Combo1.AddItem "Summer"
    Combo1.AddItem "Winter"
    Combo1.AddItem "Manual"
    Combo1.AddItem "Activate"
     ' MSComm1.CommPort = 1
     ' MSComm1.Settings = "9600,n,8,1"
   If MSComm1.PortOpen = True Then
      MSComm1.PortOpen = False
   End If
End Sub
Private Sub Command1_Click()                 'Manual'
  dat = Text1.Text
  tim = Text2.Text
  Label2.Caption = dat & " " & tim
  Command1.Enabled = False
  Command2.Enabled = True
End Sub
Private Sub Command2_Click()                     'Start'
   x = 0
   z = 0
   Timer1.Enabled = True
   Command2.Enabled = False
   Combo1.Enabled = False
End Sub
Private Sub Combo1_Click()                          'Choosing the Mode'
  CurrentTime = Format(Time, "hh:mm")
  Select Case Combo1.ListIndex
     Case 0
        tim = "20:09"
        Label2.Caption = "Every day at: " & tim
        Command2.Enabled = True
     Case 1
        tim = "19:58"
        Label2.Caption = "Every day at: 19:00"
        Command2.Enabled = True
     Case 2
       Label2.Caption = " "
       Command1.Enabled = True
      ' Command2.Enabled = True
     Case 3
       tim = CurrentTime
       Command2.Enabled = True
    End Select
End Sub

Private Sub Label1_Click()

End Sub

Private Sub Label2_Click()

End Sub

Private Sub MSComm1_OnComm()

End Sub

Private Sub Text1_Change()

End Sub

Private Sub Text2_Change()

End Sub

Private Sub Text3_Change()

End Sub

Private Sub Text4_Change()

End Sub

Private Sub Timer1_Timer()              'Main Timer'
    CurrentTime = Format(Time, "hh:mm")
    x = x + 1
   ' Text1.Text = x
    Text2.Text = tim
    Text3.Text = CurrentTime
    
    If CurrentTime = tim Then
      If z = 0 Then                            'Checks if sent '
        If MSComm1.PortOpen = False Then
           MSComm1.PortOpen = True
        End If
        MSComm1.Output = Hex(255)
        Text1.Text = Hex(255)
        z = 1
        x = 0
      End If
      Call cw
    End If
  
End Sub
Public Function cw()
  Label2.Caption = "Evrithing vorks "
  Text4.Text = x
  
  If x = 5 Then                    ' Time period in sec - x'
   If MSComm1.PortOpen = False Then
      MSComm1.PortOpen = True
   End If
   MSComm1.Output = Hex(170)
   Text1.Text = Hex(170)
   Label2.Caption = "  "
   MSComm1.PortOpen = False
   Combo1.Enabled = True
   Timer1.Enabled = False
  End If
End Function
Private Sub Timer2_Timer()           'Secondary timer for clock and date '
Label1.Caption = Date & "  " & Time
End Sub


Сообщение отредактировал IncreMan - Apr 4 2006, 17:22


--------------------
..:: Deeds Talk Loud Than Words ::..
Go to the top of the page
 
+Quote Post
bialix
сообщение Apr 5 2006, 21:40
Сообщение #9


Частый гость
**

Группа: Свой
Сообщений: 174
Регистрация: 4-11-04
Из: zp.ua
Пользователь №: 1 046



Позвольте встрять: если нужна действительно программа из 5-ти строк, то смотреть надо не на С++, а на Python. Если с Visual Basic знаком, то Python освоить будет просто.

Процедура отправки строки в СОМ-порт при помощи Питона:

ser = serial.Serial(port="COM1", baudrate=9600)
ser.write('My string')

Я бы посоветовал не заморачиваться с диалоговыми окнами, полями ввода двух строк, а прямо из интерпретатора засылать строки. Тебе ж это все для отладки надо, не так ли?


--------------------
Имей мужество пользоваться своим собственным разумом! (с) И.Кант
Go to the top of the page
 
+Quote Post
IncreMan
сообщение Apr 6 2006, 16:12
Сообщение #10





Группа: Новичок
Сообщений: 9
Регистрация: 4-04-06
Из: Израиль
Пользователь №: 15 789



Скорее это надо для красоты wink.gif
Но это часть проблемы, я не могу посылать в порт сразу весь string, а только chars по отдельности, потому как микроконтроллер может принимать через серийный порт только одно hex значение.


--------------------
..:: Deeds Talk Loud Than Words ::..
Go to the top of the page
 
+Quote Post
bialix
сообщение Apr 6 2006, 18:22
Сообщение #11


Частый гость
**

Группа: Свой
Сообщений: 174
Регистрация: 4-11-04
Из: zp.ua
Пользователь №: 1 046



Говорят, что человека нужно оценивать не по ответам, а по вопросам.

Ваши вопросы показывают насколько всё, что вы спрашиваете, далеко от вас. Если нужно по-быстрому сделать и забыть (типа курсового), то вам стоило предложить за подобную консультацию энную сумму.

Если же вы хотите этим заниматься дальше, то стоит начинать с азов.


--------------------
Имей мужество пользоваться своим собственным разумом! (с) И.Кант
Go to the top of the page
 
+Quote Post
andron86
сообщение Apr 6 2006, 19:43
Сообщение #12


Местный
***

Группа: Участник
Сообщений: 406
Регистрация: 1-03-06
Пользователь №: 14 821



Супер bialix!
Я тоже так подумал!
Go to the top of the page
 
+Quote Post
Muxamor
сообщение Apr 7 2006, 04:44
Сообщение #13


Местный
***

Группа: Свой
Сообщений: 289
Регистрация: 4-05-05
Из: Novosibirsk
Пользователь №: 4 722



А зачем замарчиваться с С++! Если вам нужно это только для отладки то тогда стандартный виндовский Гиппер терминал вам в помощь плюйте из него все что хотите в МК . Ну а в МК делайте с ней все что хотите!
ксочик кода для приема в МК могу скинуть есл инужно!


--------------------
Бубен - однако штука шаманская!!!

Go to the top of the page
 
+Quote Post
giran
сообщение Apr 7 2006, 08:30
Сообщение #14





Группа: Новичок
Сообщений: 12
Регистрация: 18-07-05
Пользователь №: 6 878



Цитата(IncreMan @ Apr 4 2006, 19:12) *
Надо написать малюсенькую программу но вот как это реализовать не знаю.


ну если малюсенькую, то делал что-то подобное года 3 назад:
Код
Public Num As String

Private Sub Command1_Click()
    Pr = "byt"
    Num = InputBox$(Pr, , Num)
        
      
      
End Sub

Private Sub Command2_Click()
      MSComm1.CommPort = 1
      MSComm1.Settings = "9600,N,8,1"
      MSComm1.PortOpen = True
      Timer1.Enabled = True
End Sub

Private Sub Command3_Click()
Timer1.Enabled = False
MSComm1.PortOpen = False

End Sub

Private Sub Timer1_Timer()
Label1.Caption = Num
  MSComm1.Output = Num
End Sub

Вводишь в инбокс символы, которые будут выведены на СОМ порт (ASCII код переменной NUM) с периодом заданным в Timer1, или я что-то не понял? Прикрепил весь проект.
Прикрепленные файлы
Прикрепленный файл  Comm_my.rar ( 1.91 килобайт ) Кол-во скачиваний: 31
 
Go to the top of the page
 
+Quote Post
IncreMan
сообщение Apr 10 2006, 09:06
Сообщение #15





Группа: Новичок
Сообщений: 9
Регистрация: 4-04-06
Из: Израиль
Пользователь №: 15 789



Огромное, спасибо, попробую что-то с этим сделать,
а это действительно курсовая, и энная сумма приемлимо, но уже завтра здавать, вроде всё сковырял, единственная проблема осталась в том, что отправляя например символ "A" приходит "U", или вообще закарючка, я проверил, получаеться что отправляя к примеру 7Ah приходит FAh. Пока не могу понять в чём дело, потому как если я из МК отправляю в компьютер, то всё принимаеться как надо, а наоборот не хочет.

В любом случае, как только всё закончу, выложу, готовый вариант, чтоб другим на пользу было, если вдруг пригодиться!


--------------------
..:: Deeds Talk Loud Than Words ::..
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 15th July 2025 - 20:58
Рейтинг@Mail.ru


Страница сгенерированна за 0.01482 секунд с 7
ELECTRONIX ©2004-2016