|
Прошу помощи в написании простой тестовой программы, Пошаговое обучение программированию в VS2010 |
|
|
|
Oct 12 2012, 00:10
|
Частый гость
 
Группа: Участник
Сообщений: 84
Регистрация: 5-04-11
Пользователь №: 64 146

|
Здравствуйте! Хочу сразу признаться - опыта не было в написании программ на VS (C++). Есть опыт в написании на C. Но по долгу службы приходится обучаться этому ремеслу. Летом в небольшие промежутки свободного времени проштудировала книжки предложенные здесь для прочтения - в голове сумбур. Для наведения порядка ... в моей голове и реального обучению, лучше начинать писать небольшую программу. Так, как рядом (на работе) спецов нет, хочу попросить вас, уважаемые форумчане, помочь в написании программы - примера. Я не прошу написать всю программу (хотя полный текст ее был более удобен для изучения и повторения), а хотя бы части, функциональные блоки программы. Мне будет удобно, изучая эти блоки, понять приемы визуального программирования и соответсвенно написать свою. Теперь к требованиям этой тестовой - учебной программе: Программа или блоки программы дложны быть написаны нв Visual Studio желательно более старшей версии - 2010 (но не старше). Можно и в предыдущих вплоть до VC6.0. Гланое условие - без использования NET. После запуска программы, она должна работать (открыть порт COM1 со стандартной установкой: старт; 8бит; стоп скорость 9600 бод, если будет предварительный выбор порта с установкой параметров- то еще лучше) и принимать три байта: 1й байт всегда стартовая метка CA, второй - B1 отображается на панели светодиодов сменой картики светодиод зажен или нет, третий B2 отображается на графике ось ординат от 0 до 255. Ось абцисс - номер пакета от 0 до 255, при превышении номера пакета 255 - опять с нуля и стирается старый график. Программа так же должна уметь передавать по COM порту данные при нажатии кнопки send - два байта: первый - стартовый CA, второй - байт данных устанавливатся битовым полем Checkbox. При запуске программы должна открыться база SQL и внее должны записываться принимаемые данные соответственно по полям: N - номер пакета (long?), B1 байт данных (char), второй байт данных B2 (char). При выходе из программы база закрывается. Из всего выше перечисленного хочется понять как работать: 1) Работа с COM портом. Прием и передача простых 2-х и 3-х байтовых пакетов. 2) Работа с базой данных SQL инициализация, открытие, запись (желательно чтение) полей, закрытие. Возможно что то я не учла. 3) Вывод форматированных данных в окно большим шрифтом (что то типа индикатора, дисплея). 4) Вывод бинарных данных в поле имитирующее светодиоды. 5) Опрос поля Checkbox (хотелось конечно, чтобы было поле выключателей OFF/ON). 6) Работа с Plot функцикей - вывод графика. Дополнительно - этого нет выше: 7) Вывод принятых данных в виде лога (в скролинговое окно - забыла как оно точно называется) и в тектовый файл, который то же надо открыть или создать, если его нет, ну и закрыть после работы с ним. Прошу, кто имеет немного свободного времени, помочь в написании этих блоков программы, желательно с небольшими комментариями. Пускай не сразу все, а по кусочкам.. Я думаю это многим поможет, не только мне, в написании своих первых программ на VS, да и не только. Заранее Спасибо! Далее в виде изображения требования к программе:
Сообщение отредактировал Alla_student - Oct 12 2012, 00:22
Эскизы прикрепленных изображений
|
|
|
|
|
 |
Ответов
|
Oct 13 2012, 21:08
|

Профессионал
    
Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634

|
Да не пропал я... Вы упомянули о хотении добавлять записи в sql базу... Я делал для себя обёртку над ADODB, к сожалению плохо приспособлена для передачи кому-то, а исходинки (архив проектов, который надо передавать для такого случая) занимает под несколько мегабайт. Принцип - срисован с persistent layer какого-то явовского проекта. Отдельно существуют классы, описывающие структуру базы данных. А использование - вот такое (заполнение некоего списка из двух колонок на экране: Код void CPultsNamesDlg::fromDatabase() { VERIFY(m_lstPults.DeleteAllItems());
CAbonentsBriefVo vo(lConnection.getConnection()); CTrue t1;
COrderBy ord0(vo, vo.chnl, false);
COrdersList ordlist; ordlist.AddTail(& ord0);
PARS rs; CVariantPtrList results; // list of fields to set results from recordset
if (!vo.select(& t1, & ordlist, rs, results)) return;
while (! rs->BOF && ! rs->adoEOF) { vo.fillResults(rs, results); // const long chnl = V_I4(& vo.chnl.value); vo.abdescription.value.ChangeType(VT_BSTR);
CString sChnl;
sChnl.Format(_T("%ld"), chnl + 1); // int iTem = m_lstPults.InsertItem(INT_MAX, sChnl); m_lstPults.SetItemText(iTem, 1, V_BSTR(& vo.abdescription.value)); m_lstPults.SetItemData(iTem, V_I4(& vo.id.value));
// rs->MoveNext(); } updateButtons(); } Код //////////////////////////////// // class CAbonentsEntity : public CEntity { public: CFieldDef id; // primary key field CFieldDef ts; CFieldDef chnl; CFieldDef abdescription;
CAbonentsEntity() : id(_T("ABONENT_ID"), ADODB::adInteger, * this), ts(_T("TS"), ADODB::adBigInt, * this), chnl(_T("CHANNEL"), ADODB::adInteger, * this), abdescription(_T("ABDESCRIPTION"), ADODB::adVarWChar, * this) {
} // // This function should be implemented in delivered classes // Name of database table holding this entity virtual CString getEntityName() const { return _T("RE_ABONENTS"); }
// // This function should be implemented in delivered classes // Name of database table holding this entity virtual const CFieldDef & getPKFieldDef() const { return id; } virtual const CFieldDef & getTsFieldDef() const { return ts; }
};
extern const CAbonentsEntity abonentsEntity;
Сообщение отредактировал Genadi Zawidowski - Oct 13 2012, 21:21
|
|
|
|
Сообщений в этой теме
Alla_student Прошу помощи в написании простой тестовой программы Oct 12 2012, 00:10 fox1 Ну уж если так хочется на Visual C++ (на C# намног... Oct 12 2012, 05:17 XVR Жуть.
Пляски с SecurityDescriptor не нужны - вы ж... Oct 12 2012, 09:18 Alla_student Цитата(XVR @ Oct 12 2012, 12:18) Жуть.
П... Oct 12 2012, 10:44 SyncLair Цитата(XVR @ Oct 12 2012, 13:18) К ТС - п... Oct 20 2012, 15:50  Alla_student Цитата(SyncLair @ Oct 20 2012, 19:50) Под... Oct 20 2012, 16:15   SyncLair Цитата(Alla_student @ Oct 20 2012, 20:15)... Oct 20 2012, 16:42 fox1 SecurityDescriptor обязателен начиная с Windows XP... Oct 12 2012, 11:22 Alla_student Цитата(fox1 @ Oct 12 2012, 14:22) Securit... Oct 12 2012, 11:30 XVR Цитата(fox1 @ Oct 12 2012, 15:22) Securit... Oct 12 2012, 11:58  Alla_student Цитата(XVR @ Oct 12 2012, 14:58) ...
Угу,... Oct 12 2012, 13:15   XVR Цитата(Alla_student @ Oct 12 2012, 17:15)... Oct 13 2012, 09:18    Alla_student Цитата(XVR @ Oct 13 2012, 13:18) ...
Вам ... Oct 13 2012, 12:41     RabidRabbit Цитата(Alla_student @ Oct 13 2012, 16:41)... Oct 15 2012, 05:34     XVR Цитата(Alla_student @ Oct 13 2012, 16:41)... Oct 15 2012, 08:00      Alla_student Цитата(XVR @ Oct 15 2012, 11:00) Запросы ... Oct 15 2012, 10:03    _pv RE: Прошу помощи в написании простой тестовой программы Oct 13 2012, 13:23     Alla_student Цитата(_pv @ Oct 13 2012, 16:23) ну с под... Oct 13 2012, 18:26      _pv Цитата(Alla_student @ Oct 14 2012, 00:26)... Oct 13 2012, 19:49 fox1 Ок ))
Начните с создания приложения Visual С++ MF... Oct 12 2012, 11:41 fox1 SecurityDescriptor обязателен начиная с Windows XP... Oct 12 2012, 12:29 RabidRabbit Цитата(fox1 @ Oct 12 2012, 16:29) Это код... Oct 12 2012, 13:00  _Артём_ Цитата(RabidRabbit @ Oct 12 2012, 16:00) ... Oct 12 2012, 13:17 Genadi Zawidowski Вот так выглядела моя программа, написанная по пох... Oct 12 2012, 16:12 Alla_student Цитата(Genadi Zawidowski @ Oct 12 2012, 20... Oct 12 2012, 21:39 fox1 Насчет SECURITY_ATTRIBUTES ))
lpSecurityAttribute... Oct 15 2012, 10:46 XVR Цитата(fox1 @ Oct 15 2012, 14:46) Windows... Oct 16 2012, 10:47  _Артём_ Цитата(XVR @ Oct 16 2012, 13:47) Залез в ... Oct 16 2012, 11:21   XVR Цитата(_Артём_ @ Oct 16 2012, 15:21) Диза... Oct 16 2012, 11:24    Alla_student Вопрос по QT -> QT c официального сайта Nokia с... Oct 20 2012, 12:33 XVR -- дубль получился Oct 16 2012, 10:57 RabidRabbit Зачем сразу CMAKE, когда QT'шный qmake замечат... Oct 20 2012, 18:31 SyncLair Цитата(RabidRabbit @ Oct 20 2012, 22:31) ... Oct 20 2012, 18:51 Alla_student Цитата(RabidRabbit @ Oct 20 2012, 21:31) ... Oct 21 2012, 14:27  Cosmojam Цитата(Alla_student @ Oct 21 2012, 17:27)... Oct 21 2012, 15:54 Владимир Иванов очень интересно Oct 21 2012, 15:34 яман-тау Может здесь что нибудь найдете Oct 21 2012, 16:20
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|