Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
King Of Kings
7 / 7 / 3
Регистрация: 08.02.2013
Сообщений: 42
#1

Передача файла из одного ПК к другому - C++

21.02.2013, 21:53. Просмотров 909. Ответов 11
Метки нет (Все метки)

Мне нужно, чтоб я мог передавать файлы через com порт на другой комп'ютер через програму, но не знаю даже примерно как реализовать это.Я не прошу скинуть готовый код, всего лишь дайте мне указание на материалы(название или ссылку)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.02.2013, 21:53
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Передача файла из одного ПК к другому (C++):

Передача свойства одного экземпляра класса другому экземпляру класса
#include <tchar.h> class A { public: A(); int aVar; }; class B :...

Неправильная передача данных из одного файла в другой
Здравствуйте! Возникли проблемы с записью информации в файл. Часть кода:...

Передача .exe другому
Хочу скинуть другу .exe скомпилированный проект в VS13 (Ctrl+F7). Скидываю...

Переход из одного интервала к другому
Прошу прощения, не знаю где должна быть подобная тема. У меня есть интервал...

Присвоение значений одного массива другому
Как присвоить значения массива Array1 массиву Array2. Допустим необходимо...

Присваивание значений одного класса другому.
Скажите, могу ли я присвоить значения одного объекта класса другому объекту...

11
XRuZzz
Антикодер
1489 / 647 / 36
Регистрация: 15.09.2012
Сообщений: 2,635
21.02.2013, 22:08 #2
Открываешь COM порт как файл:
C++
1
2
3
4
5
6
int hf = FileOpen("COM1", fmOpenReadWrite);
 
//Далее пишешь в порт
FileWrite(hf, cmd, size);
//Читаешь из порта
FileRead(hf, buf, size);
Добавлено через 1 минуту
Последовательный порт
http://www.cyberforum.ru/cpp-builder/thread695725.html

Добавлено через 6 минут
некоторые ещё советуют использовать Boost.Asio но я лично не смотрел эту штуку
1
King Of Kings
7 / 7 / 3
Регистрация: 08.02.2013
Сообщений: 42
21.02.2013, 22:12  [ТС] #3
Поподробней можно?
0
XRuZzz
Антикодер
1489 / 647 / 36
Регистрация: 15.09.2012
Сообщений: 2,635
21.02.2013, 22:19 #4
тут ещё поподробнее есть http://www.cyberforum.ru/cpp-builder/thread524314.html

Могу сам рассказать
Есть такая частица электрон, это нечто иное как материя.

Такие частицы могут перемещаться в металическом проводе(например медном). Когда они перемещаются возникает напряжение. Объяснить, что такое напряжение в проводе?
0
King Of Kings
7 / 7 / 3
Регистрация: 08.02.2013
Сообщений: 42
21.02.2013, 22:21  [ТС] #5
Да я про код поподробней написал=(
0
Kuzia domovenok
2215 / 1984 / 447
Регистрация: 25.03.2012
Сообщений: 6,971
Записей в блоге: 1
21.02.2013, 22:30 #6
Достаточно знать такие WinAPI функции как
CreateFile
WriteFile
ReadFile
GetCommState
SetCommState
PurgeComm
CloseHandle

Если реализовывать чтение порта в отдельном потоке, ещё немного функций для работы с потоками и событиями
CreateThread
CreateEvent
SuspendThread
ResumeThread
SetEvent
WaitForSingleObject

Добавлено через 3 минуты
Пример из книги Ю.Магда. Программирование последовательных интерфейсов.
Приём данных из COM3 сохранение их в файл, вывод на экран, и отправка обратно по ком-порту.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
#include <windows.h>
#include <stdio.h>
#include <conio.h>
 
char buf[128];
char *pbuf = buf;
int counter = 0;
 
HANDLE hCom, hEvent;
DWORD bytesRead, bWritten;
 
BOOL fSuccess;
HANDLE hThread;
DWORD dwParam, dwThreadId;
 
VOID WINAPI ThreadProc(PVOID* dummy)
{
 printf("Waiting for data from COM4...\n");
 while (true)
 {
     ReadFile(hCom,
              pbuf,
              1,
              &bytesRead,
              NULL);
     if (bytesRead > 0)
      {
       WriteFile(hCom,
                 pbuf++,
                 1,
                 &bWritten,
                 NULL);
                 counter++;
      if (counter == 10)
       {
        SetEvent(hEvent);
        buf[counter] = '\0';
        counter = 0;
        pbuf = buf;
       }
   }
 }
}
 
void main(void)
{
  char *pcComPort = "COM4";
  DCB dcb;
  FILE *fout;
 
  hCom = CreateFile(pcComPort,
                    GENERIC_READ | GENERIC_WRITE,
                    0,
                    NULL,
                    OPEN_EXISTING,
                    0,
                    NULL);
  if (hCom == INVALID_HANDLE_VALUE)
   {
     printf("COM4 opening error!\n");
     return;
   }
 
  GetCommState(hCom, &dcb);
  dcb.BaudRate = CBR_9600;
  dcb.ByteSize = 8;
  dcb.Parity = NOPARITY;
  dcb.StopBits = ONESTOPBIT;
  fSuccess = SetCommState(hCom, &dcb);
 
  if (!fSuccess)
   {
    printf ("SetCommState failed with error %d.\n", GetLastError());
    return;
   }
 
  printf ("Serial port %s successfully reconfigured.\n", pcComPort);
  GetCommState(hCom, &dcb);
  printf("COM4 baud rate is %d\n", dcb.BaudRate);
 
  hEvent = CreateEvent(NULL, FALSE, FALSE, NULL);
  hThread = CreateThread(NULL,
                         0,
                         (LPTHREAD_START_ROUTINE)ThreadProc,
                         &dwParam,
                         0,
                         &dwThreadId);
  if ((fout = fopen("c:\\Test", "a+")) == NULL)
   {
    printf("Can't create file!\n");
    return;
   }
  printf("Press Enter to exit...\n");
  do
    {
      WaitForSingleObject(hEvent, INFINITE);
      printf("%s\n", buf);
      fwrite(buf, sizeof(char), 10, fout);
    } while (!kbhit());
 
  fclose(fout);
  CloseHandle(hCom);
  return;
}
1
King Of Kings
7 / 7 / 3
Регистрация: 08.02.2013
Сообщений: 42
21.02.2013, 23:24  [ТС] #7
Это уже получше=)

Добавлено через 42 минуты
Не могу понять как написать код!!!
0
XRuZzz
Антикодер
1489 / 647 / 36
Регистрация: 15.09.2012
Сообщений: 2,635
22.02.2013, 09:40 #8
Цитата Сообщение от King Of Kings Посмотреть сообщение
Это уже получше=)

Добавлено через 42 минуты
Не могу понять как написать код!!!
за вас уже всё написали.

всё что вам нужно это http://www.cyberforum.ru/cpp-beginners/thread152353.html

Чуть не забыл, для отладки может потребоваться рабочая программа, Com Port Toolkit она позволяет передавать файл по COM порту. Эта программа мне всегда сильно помогает.
0
aLarman
22.02.2013, 17:14
  #9

Не по теме:

Цитата Сообщение от XRuZzz Посмотреть сообщение
Такие частицы могут перемещаться в металическом проводе(например медном). Когда они перемещаются возникает напряжение.
это не напряжение, это ток

0
Kuzia domovenok
2215 / 1984 / 447
Регистрация: 25.03.2012
Сообщений: 6,971
Записей в блоге: 1
22.02.2013, 22:06 #10
Цитата Сообщение от King Of Kings Посмотреть сообщение
Не могу понять как написать код!!!
что конкретно. Вот код написан, например. Что в нём непонятно?
0
XRuZzz
22.02.2013, 22:54
  #11

Не по теме:

Цитата Сообщение от aLarman Посмотреть сообщение

Не по теме:


это не напряжение, это ток

...
я в том смысле если частицы движутся то работа по переносу заряда совершается, если нет, не совершается

0
King Of Kings
7 / 7 / 3
Регистрация: 08.02.2013
Сообщений: 42
19.03.2013, 17:12  [ТС] #12
Kuzia domovenok, Напиши пример чтения запись файла через ReadFile WriteFile(файл любой длинны)
0
19.03.2013, 17:12
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.03.2013, 17:12
Привет! Вот еще темы с решениями:

Передача переменной из цикла другому классу
Есть цикл, каждое новое значение переменной нужно передавать в метод др....

Перенесение элементов массива из одного места к другому
Массив состоит из 70-ти элементов(X), в интервале -1&lt;=Xi&lt;=1. Нужно переписать...

Проверка на принадлежность элементов одного массива к другому
Здравствуйте. Имеется 2 массива - in_string (содержит текст, который вводится...

В чем заключается наследование одного класса другому?
Вообщем есть пара заданий теория ,можек кто-нибудь помочь и ответить на них ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru