15Aug
Filed in Програм-е
Leave a comment
Функция преобразования строк из char в wchar_t:
#include <sstream>
//char в wchar_t
bool char2wchar_t(char *str1, wchar_t *str2){
std::wstringstream st;
st << str1;
return !(st >> str2).fail();
};
Пример использования:
char cStr[]="Hello";
wchar_t wStr[10];
char2wchar_t(cStr,wStr);
C++, char, char2wchar_t, cpp, stream, wchar_t, wstringstream, преобразовать, программирование, строка, функция
14Jun
Filed in Web | Новости
Leave a comment
Недавно, мы создали маленький проект — можно даже сказать, эксперимент. Суть его заключается в том, чтобы узнать какие из чисел от 1 до 100 более популярны, а какие менее. Вы можете принять участие в этом эксперименте на http://vsreality.net/numbers . Концепт прост: впишите число и введите его в нашу датабазу. Если вам понравилась наша идея, вы можете помочь нам и порекомендовать ссылку вашим знакомым.
Спасибо всем!
numbers, числа, число
07Jun
Filed in Програм-е
Leave a comment
Иногда возникает необходимость, преобразовать число в формате int в массив байт и обратно. К примеру для его передачи по сети, так после преобразования числа в массив вам будет необходимо передать только четыре байта информации в место того, что бы передавать все цифры длинного числа.
//int to uchar
bool int2bytes(int &i, uchar *buf){
memcpy(buf,&i,sizeof(int));
return true;
}
//uchat to int
void bytes2int(uchar *buf, int &i){
memcpy(&i,buf,sizeof(int));
}
bytes2int, C++, int, int2bytes, memcpy, programming, uchar, программирование, функция
17Aug
Filed in Програм-е
1 Comment
Давно хотел научиться работать с сокетами в windows, но все как-то не мог начать. Недавно наткнулся на хорошую статью в интернете, где были примеры клиентского и серверного приложений. Нашёл еще немного информации, на данную тему, обобщил её и смог запустить мой первый клиент и сервер. Вот о них я и буду говорить. Я не использовал ничего лишнего, только то, что предлагает WinAPI.
И так, для того, чтобы написать любое приложение, которое работает с сокетами в Windows, необходимо включить в ваш проект файл winsock2.h и библиотеку WS2_32.lib В Microsoft Visual C++ Express edition. Это можно сделать так: Проект -> Свойства проекта -> Свойства конфигурации -> Компоновщик -> Ввод и в поле “Дополнительные зависимости” нужно вписать имя библиотеки.
И так, код сервера:
#include <winsock2.h>
#include <stdio.h>
int main(void)
{
WORD sockVer;
WSADATA wsaData;
int retVal;
sockVer = MAKEWORD(2,2);
WSAStartup(sockVer, &wsaData);
//Создаем сокет
SOCKET servSock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
if(servSock == INVALID_SOCKET)
{
printf("Unable to create socket\n");
WSACleanup();
return SOCKET_ERROR;
}
SOCKADDR_IN sin;
sin.sin_family = PF_INET;
sin.sin_port = htons(1111);
sin.sin_addr.s_addr = INADDR_ANY;
retVal = bind(servSock, (LPSOCKADDR)&sin, sizeof(sin));
if(retVal == SOCKET_ERROR)
{
printf("Unable to bind\n");
WSACleanup();
return SOCKET_ERROR;
}
//Пытаемся начать слушать сокет
retVal = listen(servSock, 10);
if(retVal == SOCKET_ERROR)
{
printf("Unable to listen\n");
WSACleanup();
return SOCKET_ERROR;
}
//Ждем клиента
SOCKET clientSock;
clientSock = accept(servSock, NULL, NULL);
if(clientSock == INVALID_SOCKET)
{
printf("Unable to accept\n");
WSACleanup();
return SOCKET_ERROR;
}
char szReq[8];
retVal = recv(clientSock, szReq, 8, 0);
if(retVal == SOCKET_ERROR)
{
printf("Unable to recv\n");
return SOCKET_ERROR;
}
printf("Got the request from client\n%s\n",szReq);
char *szResp = "Response";
printf("Sending response from server\n");
retVal = send(clientSock, szResp, strlen(szResp), 0);
if(retVal == SOCKET_ERROR)
{
printf("Unable to send\n");
return SOCKET_ERROR;
}
//Закрываем сокет
closesocket(clientSock);
closesocket(servSock);
WSACleanup();
return 0;
}
Код клиента:
#include <stdio.h>
#include <winsock2.h>
int main()
{
WORD ver = MAKEWORD(2,2);
WSADATA wsaData;
int retVal=0;
WSAStartup(ver,(LPWSADATA)&wsaData);
LPHOSTENT hostEnt;
hostEnt = gethostbyname("localhost");
if(!hostEnt)
{
printf("Unable to collect gethostbyname\n");
WSACleanup();
return 1;
}
//Создаем сокет
SOCKET clientSock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
if(clientSock == SOCKET_ERROR)
{
printf("Unable to create socket\n");
WSACleanup();
return 1;
}
SOCKADDR_IN serverInfo;
serverInfo.sin_family = PF_INET;
serverInfo.sin_addr = *((LPIN_ADDR)*hostEnt->h_addr_list);
serverInfo.sin_port = htons(1111);
retVal=connect(clientSock,(LPSOCKADDR)&serverInfo, sizeof(serverInfo));
if(retVal==SOCKET_ERROR)
{
printf("Unable to connect\n");
WSACleanup();
return 1;
}
printf("Connection made sucessfully\n");
char *pBuf = "Request";
printf("Sending request from client\n");
retVal = send(clientSock, pBuf, strlen(pBuf), 0);
if(retVal == SOCKET_ERROR)
{
printf("Unable to send\n");
WSACleanup();
return 1;
}
char szResponse[9];
retVal = recv(clientSock, szResponse, 9, 0);
if(retVal == SOCKET_ERROR)
{
printf("Unable to recv\n");
WSACleanup();
return 1;
}
printf("Got the response from server\n%s\n",szResponse);
closesocket(clientSock);
WSACleanup();
return 0;
}
Информацию о функциях, используемых в примерах можно найти здесь
Так же, замечательная статья, которая помогла мне разобраться здесь
C++, socket, winsock2, клиент, сервер
17Aug
Filed in Програм-е
1 Comment
char* names[] = { "pic1.png", "pic2.png", "pic3.png",
"pic4.png", "pic5.png", "pic6.png", 0 };
for( i = 0; names[i] != 0; i++ )
{
printf("%s", names[i] );
}
array, C++, char, массив
13Aug
Filed in Програм-е
Leave a comment
Эта маленькая программа просто выводит сообщение на экран. Для того, что бы запустить ее вам необходим о создать win32 проект(не консольный) и просто встать текст программы приведенный ниже. Информацию о функции MessageBox можно получить здесь.
#include <windows.h>
int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nShow)
{
MessageBox(NULL, (LPCWSTR)L"Hello world!!!", (LPCWSTR)L"Welcome message", MB_OK);
return 0;
}
C++, MessageBox, winapi
31Jul
Filed in Наработки
1 Comment
Проектируя металлорежущий инструмент часто требуется проводить одни и те же расчеты ища оптимальный вариант. Расчеты можно производить и другими программными средствами, однако учитывая кучу факторов, законов теории резания и зависимостей этот процесс может оказаться сложным и весьма запутанным.
С целью оптимизации и автоматизации многих вычислений основанных на логике и пишется данная программа. Так как сама по себе работа весьма трудоемка искать оптимальных вариантов среды разработки не стал. Пишу на том что знаю – C# + WPF.
Пока что окно разделено на 3 блока.
- Свойства – слева, здесь происходит вся основная работа, изменения.
- Визуализация – справа, здесь будет отображаться параметры инструмента которые меняются в данный момент (рабочая отверстие, параметры протяжки, зависимости).
- Иерархия – внизу., здесь будет отображено дерево блоков из которых состоит инструмент (протяжка) в виде графов. В котором можно будет визуально оценить преимущества некоторых параметров различных вариантов протяжек.
Работа весьма большая по объему, однако пока что делается.
На данный момент идет работа с блоком Свойства и разработан класс работы с проектом. Входя в меню Файл можно создать, открыть, сохранить или закрыть ваш проект. Основная информация проекта хранится в виде xml-файла.
Некоторые вопросы еще требуют времени на разбор однако начало дано и главное есть желание и возможность его закончить.
C++, WPF, инструмент, металлорежущий, протяжка
04Jul
Filed in Роботы
Leave a comment
Не так давно я приобрел Arduino Duemilanove стоимостью в $28, если подумать эта довольно низкая цена по сравнению с другими подобными решениями, и по сравнению с тем что Arduino может дать начинающим.
И так Arduino Duemilanove, что же это такое? Ответ прост микроконтроллерный модуль, по сути обложка для ATMega328 микроконтроллера. Arduino позволяет легко программировать микроконтроллер и легко взаимодействовать с ним, что немало важно для людей кто ни когда не работал с микроконтроллерами. Модуль может выступать не только как основа для робота но и так же в роли программатора для ATMega328 так как на нем установлен сокет для него, и в роли интерфейса для подключения периферийных устройств таких как сенсоры или сервомоторы. Arduino может легко получать команды от компьютера как как при подключение к компьютеру он появляется в виде обыкновенного COM-порта.
Весь софт для программирования модуля бесплатный, а его код открыт для всех желающих. Это дало Arduino большую популярность, большое количество людей работают над его улучшением и развитием, написанием модулей и библиотек.
Arduino, robot, Обзор
01Jul
Filed in Роботы
Leave a comment
#include <Wire.h>
int compassAddress = 0x42 >> 1; // Из спецификации компаса, его адрес 0x42
// Сдвигаем адрес на 1 bit в право, так как Wire библиотека
// требует только 7 bits адреса
int reading = 0;
void setup()
{
Wire.begin(); // Подключаемся к i2c шине (обязательно для мастера)
Serial.begin(9600); // Начинаем передачу данных по COM порту со скоростью 9600bps
}
void loop()
{
// Шаг 1: Отправка команды компасу на измерение угла
Wire.beginTransmission(compassAddress); // Посылаем устройству
// Адрес для компаса из спецификации 66 (0x42)
// но i2c адресация использует только 7 высших бит,
// это значит что адрес компаса 33
Wire.send('A'); // Отправка команды компасу на измерение угла
Wire.endTransmission(); // Остановка передачи данных
// Шаг 2: Ждем пока чтение завершится
delay(10); // По спецификации нужно ждать как минимум 6000 микросекунд
// Шаг 3: Запрос на чтение сенсора
Wire.requestFrom(compassAddress, 2); // Запрос на получение 2 битов
// от ведомого устройства #33
// Шаг 4: Запрос на чтение сенсора
if(2 <= Wire.available()) // Если два байта информации были получены от сенсора
{
reading = Wire.receive(); // Получаем первый байт
//(переписывает предшествующий результат)
reading = reading << 8; // Сдвигаем первый байт на 8 бит влево
reading += Wire.receive(); // Получаем второй байт и добавляем к результату
reading /= 10;
Serial.println(reading); // выводим результат
}
delay(500); // Ждем пол секунды
}
Ссылки:
Compass Module – HMC6352
http://wiring.org.co
Arduino, HMC6352, robot, Компас
05Jun
Filed in Разное
Leave a comment
easygoing = easy to talk to / easy to live with
tidy = clean / organize
greedy = person who doesn’t like to give money or share somethink
cranky = unhappy / complaining
rude = inpolite / disrespectful
mature = thinking like adult
childish = behaving like kid
ignorant = with little or no knowlege
narrow-minded = conservative / who doesn’t like new things
gifted = talented
fussy = nervous and hectic
punctual = being on time
short-tempered = easy to get angry
reckless = careless / irresponsible
light-hearted = not serious / without any care
humble = simple / modest
loyal = true to a spouse / a friend
hypocritical(double-faced) = saying one thing? thinking another thing
bossy = like to order
anxious = worried
adjectives, character, English, английский, слова