با سلام و خسته نباشید. میخواستم یک pdf کامل در مورد cpp برای دانلود بزارید. خیلی ممنون.
پایان فعالیت تاپیک
ادامه بحث با پورت موازی
ادامه بحث با پورت سریال
با سلام و خسته نباشید. میخواستم یک pdf کامل در مورد cpp برای دانلود بزارید. خیلی ممنون.
با سلام
من می خوام از طریق پورت پرینتر بیت های 0 و 1 را به کامپیوتر بدم، بعد نسبت به کد ورودی ، در کامپیوتر اونها را شناسایی کنم و در در قبال هر کد یک برنامه در کامپیوتر اجرا بشه
کسی می تونه به من کمک کنه؟ با چه برنامه ای بهتر هست این کار رو انجام بدم؟ چه چیزی لازم دارم؟
با تشکر
با سلام. من هم در تصدیق صحبت های kernel عزیز توصیه می کنم کار با میکرو کنترلرها بخصوص AVR رو یاد بگیرید. البته رشته من نرم افزار هست. اما در کار با میکرو ها آدم با مسایلی برمی خوره که واقعا جالبه.
کسی پاسخ به من نمی ده؟
اقا مسعود، من هم نرم افزار خوندم
با برنامه نویسی های مختلف کار کردم اما معمولا نیاز به کار با پورت نداشتم
من می خوام از طریق پورت پرینتر بیت های 0 و 1 را به کامپیوتر بدم، بعد نسبت به کد ورودی ، در کامپیوتر اونها را شناسایی کنم و در در قبال هر کد یک برنامه در کامپیوتر اجرا بشه
پیشنهاد شما چیه و از چه روشی استفاده کنم؟ منبع هم اگه هست معرفی کنید لطفا
ممنون
سلام
میخواستم اگه کسی میتونه در مورد کار با فلش مموری های که با یو اس بی به سیستم وصل میشن کمم کنه
میخوام به تک تک خانه های حافظه توی این نوع حافظه ها دسترسی داشته باشم.و بتونم مستقیما" توش چیز بنویسم.
لطفا اگر میتوانید برنامه چراغ چشمک زن را با زبان c برای من ارائه دهیید. فقط با زبان c
[quote=Alireza Orumand;423614]masoud جان درسته که این توابع توی این سرفایل ها وجود داره ولی یادتون باشه شما دارید تو ویندوز برنامه مینویسید ولی این سرفایل مال زمانه داسه و تو داس اجازه دسترسی مستقیم به پورت ها گرفته نشده بود. به هر حال شما میخواهید برنامه رو تو ویندوز اجرا کنید و برای دسترسی به پورت هم باید به یکی از روش هایی که گفته شد عمل کنید.
شرمنده از اینکه تنها کمکمی که میتونم به شما بکنم اینه که بگم از کامپایلر جدید تری استفاده کنید که این سرفایل رو داشته باشه.
راستی میشه بگید مشکلتون چی هست که از کامپایلر های قدیمی استفاده میکنید؟
این یک پروژه که باید با c بنویسم . اگه ویندوز 98 باشه میتونیم برنامه رابا c اجرا کرد وجواب گرفت
سلام
برای ارسال اطلاعات روی پورت سریال هم راهنمایی کنید . ممنون.
سلام،
خوشحالم که بالاخره یه نفرو پیدا کردم که با میکرو کار کرده و ربات ساخته
در ضمن میخواد راهنمایی هم بکنه!
من به تازگی عضو یه گروه ساخت روبات شدم در این گروه طبق معمول کارها تقسیم شده و متاسفانه وشاید هم خوشبختانه برنامه نویسی آن را به من دادن!
در حالی که من اصلا چیز زیادی در مورد پورت ها نمی دونم
که با این تاپیک یه چیزایی دستگیرم شد(ممنون)
حالا از شما میخوام منو راهنمایی کنید،
تکنیک پردازش تصویر چیه؟!
چطوری میشه به صورت wireless به پورت سریال متصل شد؟(برنامه نویسیش چه جوریه؟)
مانیتورینگ چیست؟
اطلاعاتی که از روبات گرفته میشه (ازطریق پورت) اگر بخواهیم به صورت گرافیکی باشد کدام نرم افزار را پیشنهاد میکنید؟
و....
مرسی
به پورت USb چه جوری میشه دسترسی پیدا کرد و از آن اطلاعات گرفت؟
کدام پورت برای کار با ربات بهتره؟سرعت بالاتری داره؟وکار باهاش راحت تره؟
با سلام
آقایون مثل این که این تاپیک تعطیل شده
شاید آقای Alireza Orumand هم رفتن خدمت زیر پرچم؟
سلام
من میخواهم از طریق ورودی Line in کارت صوتی سیگنال وارد کنم و پس از یک سری پردازش سیگنال را نمایش بدهم لطفا من را راهنمایی کنید.
nemati_nj2004@yahoo.com
سلام
من یک مدار میخوام که از طریق کامپیوتر و با پورت مواری بشه 3 موتور استپر رو کنترل کنه و شبیه cnc عمل کنه کسی می تونه کمک کنه....
سلام
ترانزیستورهای مدار چیه ؟
ممنون از لطفتون
دوستان اگه تاپيك رو ادامه نميدين يه منبع خوب معرفي كنيد.
با سلام
خیلی ممنونم از فعالیت های دوستان در این زمینه
سلام به دوستان عزیز ، البته یه کم با تاخیر
من تا حالا با سخت افزار کار نکردم ، میگم اگه موافقید این تاپیک رو ادامه بدیم ، به نظرم میتونه مفید باشه
فقط اگه ممکنه از سطح مبتدی شروع کنید تا منم بفهمم
منتظرما !!!!!
دوست عزیز جناب علیرضا
لطف میکنید یه برنامه فراخوانی و خواندن و نوشتن روی پورت سری را بذاری
ممنون میشم
این برنامه را ببینید.
این برنامه با C# هست ولی در c و C++ نمیشه اینطوری برنامه نوشت ...خیلی سخت تره!
خودم دارم روی یه برنامه واسه این کار میکنم ولی هنوز جواب 100% نداده وگرنه میذاشتمش
در همین راستا یه سوال داشتم من میخوام برنامه ای بنویسم که در حالت sleep باشه ( یعنی نمیخوام اینطوری باشه که مدام داخل یه لوپ بپرسم اتفاقی افتاده یا نه) و وقتی که وقفه ای از یه IRQ مشخص مثلا IRQ4 مربوط به Com1 اومد بره یه عملی رو انجام بده در حالت ساده اش یه متنی رو چاپ کنه ...فقط تاکید میکنم خیلی مهمه حالت busy waiting نباشه !کسی کمکی میتونه بکنه ؟
سلام
می خواستم بدونم که چجوری میشه به میکروفن خود سیستم وصل شد و از اون فریکانس گرفت؟
سوال:
چه جوری می شه به میکروفن وصل شد و ازش اطلاعات صوتی گرفت؟
گرچه یکمی دیره اما این سورس رو ببین :
/************************************************** **************************
** WARNING: You need at least a COMPACT memory model to run this. **
************************************************** ***************************
** Demonstration of recording a WAV file through the Sound Blaster **
** by Steven H Don **
** **
** For questions, feel free to e-mail me. **
** **
** shd@earthling.net **
** http://shd.cjb.net **
** **
************************************************** **************************/
//Include files
#include "ALLOC.H"
#include "DOS.H"
#include "MEM.H"
#include "CONIO.H"
#include "STDIO.H"
#define CD 2
#define Microphone 4
#define LineIn 5
//The simplest header a WAV file can have is this:
struct SimpleHeader {
long RIFF;
long NextChunkSize;
long WAVE;
long fmt;
long fmtDataLength;
short WaveType;
short Channels;
long SampleRate;
long BytesPerSecond;
short BlockAlignment;
short BitResolution;
long data;
long SoundLength;
} Header;
char Key;
unsigned int WBuffer; //Write Buffer indicator
unsigned char *DMABuffer; //Pointer to DMA Buffer
unsigned int DMA; //The DMA channel
unsigned int IRQ; //The IRQ level
unsigned int Base; //Sound Blaster base address, Word
//Pointers to old interrupt routines
#ifdef __cplusplus
void interrupt (*OldIRQ)(...);
#else
void interrupt (*OldIRQ)();
#endif
FILE *WAVFile; //Handle of the WAV file}
long Recorded; //Amount of samples recorded}
/************************************************** **************************
** Checks to see if a Sound Blaster exists at a given address, returns **
** true if Sound Blaster found, false if not. **
************************************************** **************************/
int ResetDSP(unsigned int Test)
{
//Reset the DSP
outportb (Test + 0x6, 1);
delay(10);
outportb (Test + 0x6, 0);
delay(10);
//Check if (reset was succesfull
if (((inportb(Test + 0xE) & 0x80) == 0x80) && (inportb(Test + 0xA) == 0xAA))
{
//DSP was found
Base = Test;
return (1);
}
else
//No DSP was found
return (0);
}
/************************************************** **************************
** Send a byte to the DSP (Digital Signal Processor) on the Sound Blaster **
************************************************** **************************/
void WriteDSP(unsigned char Value)
{
//Wait for the DSP to be ready to accept data
while ((inportb(Base + 0xC) & 0x80) == 0x80);
//Send byte
outportb (Base + 0xC, Value);
}
/************************************************** **************************
** Writes a value to the SB's mixer chip **
************************************************** **************************/
void WriteMixer (unsigned char R, unsigned char V)
{
outportb (Base + 4, R);
outportb (Base + 5, V);
}
/************************************************** **************************
** Selects the source device for recording. **
** Valid values are: Microphone, CD and LineIn **
************************************************** **************************/
void SelectSource (char Source)
{
//For older SB's
WriteMixer (0xC, Source);
//For newer SB's
{
//Disable right channel
WriteMixer (0x3E, 0);
//Record all sound through left channel
switch (Source) {
case Microphone : WriteMixer (0x3D, 1); break;
case CD : WriteMixer (0x3D, 6); break;
case LineIn : WriteMixer (0x3D, 24); break;
}
//Set volume of whatever is recording to full
switch (Source) {
case Microphone : WriteMixer (0x0A, 7); break;
case CD : WriteMixer (0x28, 255); break;
case LineIn : WriteMixer (0x2E, 255); break;
}
//Allow line and CD to be heard through speakers, but not microphone}
switch (Source) {
case Microphone : WriteMixer (0x3C, 0); break;
case CD : WriteMixer (0x3C, 6); break;
case LineIn : WriteMixer (0x3C, 24); break;
}
}
}
/************************************************** **************************
** Asks the user for a filename and prepares that file for recording. **
************************************************** **************************/
void PrepareFile ()
{
char FileName [255];
//Ask the user for a file name
printf ("Please give filename : ");
scanf ("%s", FileName);
//Open the file for output
WAVFile = fopen (FileName, "wb");
//Save a dummy header
fwrite (&Header, sizeof(Header), 1, WAVFile);
}
/************************************************** **************************
** Starts recording. The DMA controller is programmed with a block length **
** of 32K - the entire buffer. The DSP is instructed to play blocks of 16K **
** and then generate an interrupt (which allows the program to save the **
** parts that have already been recorded) **
************************************************** **************************/
void StartRecording ()
{
long LinearAddress;
unsigned int Page, OffSet;
//Nothing recorded yet
Recorded = 0;
WriteDSP (0xD3); //DSP-command D1h - Disable speaker, required
//on older SB's
WriteDSP (0x40); //DSP-command 40h - Set sample frequency
WriteDSP (165); //Write time constant
/*
The time constant is calculated as follows:
(65536 - (256000000 / frequency)) >> 8
*/
//Convert pointer to linear address
LinearAddress = FP_SEG (DMABuffer);
LinearAddress = (LinearAddress << 4) + FP_OFF (DMABuffer);
Page = LinearAddress >> 16; //Calculate page
OffSet = LinearAddress & 0xFFFF; //Calculate offset in the page
outportb (0x0A, 4 | DMA); //Mask DMA channel
outportb (0x0C, 0); //Clear byte pointer
outportb (0x0B, 0x54 | DMA); //Set mode
/*
The mode consists of the following:
0x54 + x = binary 01 01 01 xx
| | | |
| | | +- DMA channel
| | +---- Write operation (the DSP writes to memory)
| +------- Auto init mode
+---------- Block mode
*/
outportb (DMA << 1, OffSet & 0xFF); //Write the offset to the DMA controller
outportb (DMA << 1, OffSet >> 8);
if (DMA == 0) outportb (0x87, Page);
if (DMA == 1) outportb (0x83, Page);
if (DMA == 3) outportb (0x82, Page);
outportb ((DMA << 1) + 1, 0xFF); //Set the block length to 0x7FFF = 32 Kbyte
outportb ((DMA << 1) + 1, 0x7F);
outportb (0x0A, DMA); //Unmask DMA channel
WriteDSP (0x48); //DSP-command 48h - Set block length
WriteDSP (0xFF); //Set the block length to 0x3FFF = 16 Kbyte
WriteDSP (0x3F);
WriteDSP (0x2C); //DSP-command 2Ch - Start auto-init playback
}
/************************************************** **************************
** Saves one half of the DMA buffer to the file **
************************************************** **************************/
void SaveBuffer (unsigned int Buffer)
{
fwrite (DMABuffer + (Buffer << 14), 16384, 1, WAVFile);
Recorded += 16384;
}
/************************************************** **************************
** Saves the final part of the buffer and finalizes the WAV file **
************************************************** **************************/
void EndRecording ()
{
unsigned int Counter, OffSet, DMAPointer;
//Stops DMA-transfer
WriteDSP (0xD0);
WriteDSP (0xDA);
//Read DMA pointer from DMA controller
DMAPointer = inportb (1 + (DMA >> 1));
DMAPointer += (inportb (1 + (DMA >> 1)) << 8);
/*
DMAPointer contains amount that remains to be played.
This is converted to the offset of the current sample
*/
OffSet = 0x7FFF - DMAPointer;
//Save the last bit
fwrite (DMABuffer + (OffSet & 16384),
OffSet & 16383,
1, WAVFile);
//The total amount recorded is now available
Recorded += OffSet & 16383;
//Save the actual header
Header.RIFF = 0x46464952; //"RIFF"
Header.NextChunkSize = Recorded + 36; //Size of the WAVE chunk
Header.WAVE = 0x45564157; //"WAVE"
Header.fmt = 0x20746D66; //"fmt "
Header.fmtDataLength = 16; //length of fmt chunk
Header.WaveType = 1; //Standard uncompressed WAV file
Header.Channels = 1; //Mono
Header.SampleRate = 11025; //11KHz
Header.BytesPerSecond = Header.Channels * Header.SampleRate;
Header.BlockAlignment = 1; //1 for 8bit, 2 for 16bit
Header.BitResolution = 8; //8bit WAV file
Header.data = 0x61746164; //"data"
Header.SoundLength = Recorded;
//Save the actual header
fseek (WAVFile, 0, SEEK_SET);
fwrite (&Header, sizeof(Header), 1, WAVFile);
fclose (WAVFile);
}
/************************************************** **************************
** IRQ service routine - this is called when the DSP has finished playing **
** a block **
************************************************** **************************/
#ifdef __cplusplus
void interrupt ServiceIRQ (...)
#else
void interrupt ServiceIRQ ()
#endif
{
//Relieve DSP
inportb (0x22E);
//Acknowledge hardware interrupt
outportb (0x20, 0x20);
//Acknowledge cascade interrupt for IRQ 2 and 10
if (IRQ == 2 || IRQ == 10) outportb (0xA0, 0x20);
//Save buffer
SaveBuffer (WBuffer);
//Toggle between write buffers
WBuffer ^= 1;
}
/************************************************** **************************
** This procedure allocates 32K of memory to the DMA buffer and makes sure **
** that no page boundary is crossed **
************************************************** **************************/
void AssignBuffer ()
{
char *TempBuf; //Temporary pointer
long LinearAddress;
unsigned int Page1, Page2; //Words
//Assign 32K of memory
TempBuf = (char *)malloc(32768);
//Calculate linear address
LinearAddress = FP_SEG (TempBuf);
LinearAddress = (LinearAddress << 4) + FP_OFF (TempBuf);
//Calculate page at start of buffer
Page1 = LinearAddress >> 16;
//Calculate page at end of buffer}
Page2 = (LinearAddress + 32767) >> 16;
//Check to see if a page boundary is crossed
if (Page1 != Page2) {
//If so, assign another part of memory to the buffer
DMABuffer = (char *)malloc(32768);
free (TempBuf);
} else //otherwise, use the part we've already allocated
DMABuffer = TempBuf;
memset (DMABuffer, 128, 0x7FFF);
}
void FindSB ()
{
int Temp;
//Check for Sound Blaster, address: ports 220, 230, 240, 250, 260 or 280
for (Temp = 1; Temp < 9; Temp++) {
if (Temp != 7)
if (ResetDSP (0x200 + (Temp << 4))) {
break;
}
}
if (Temp == 9) {
//or none at all
printf ("No Sound Blaster found\n");
return;
} else printf ("Sound Blaster found at %Xh\n", Base);
}
void InitIRQandDMA ()
{
printf ("Please specify DMA channel : "); scanf("%d", &DMA);
printf ("Please specify IRQ level : "); scanf("%d", &IRQ);
//Save old IRQ vector
if (IRQ == 2 || IRQ == 10 || IRQ == 11) {
if (IRQ == 2) OldIRQ = getvect (0x71);
if (IRQ == 10) OldIRQ = getvect (0x72);
if (IRQ == 11) OldIRQ = getvect (0x73);
} else OldIRQ = getvect (8 + IRQ);
//Set new IRQ vector
if (IRQ == 2 || IRQ == 10 || IRQ == 11) {
if (IRQ == 2) setvect (0x71, ServiceIRQ);
if (IRQ == 10) setvect (0x72, ServiceIRQ);
if (IRQ == 11) setvect (0x73, ServiceIRQ);
} else setvect (8 + IRQ, ServiceIRQ);
//Enable IRQ
if (IRQ == 2 || IRQ == 10 || IRQ == 11) {
if (IRQ == 2) outportb (0xA1, inportb (0xA1) & 253);
if (IRQ == 10) outportb (0xA1, inportb (0xA1) & 251);
if (IRQ == 11) outportb (0xA1, inportb (0xA1) & 247);
outportb (0x21, inportb (0x21) & 251);
} else outportb (0x21, inportb (0x21) & !(1 << IRQ));
}
void ReleaseIRQandDMA ()
{
//Free interrupt vectors used to service IRQs
if (IRQ == 2 || IRQ == 10 || IRQ == 11) {
if (IRQ == 2) setvect (0x71, OldIRQ);
if (IRQ == 10) setvect (0x72, OldIRQ);
if (IRQ == 11) setvect (0x73, OldIRQ);
} else setvect (8 + IRQ, OldIRQ);
//Mask IRQs
if (IRQ == 2 || IRQ == 10 || IRQ == 11) {
if (IRQ == 2) outportb (0xA1, inportb (0xA1) | 2);
if (IRQ == 10) outportb (0xA1, inportb (0xA1) | 4);
if (IRQ == 11) outportb (0xA1, inportb (0xA1) | 8);
outportb (0x21, inportb (0x21) | 4);
} else outportb (0x21, inportb (0x21) | (1 << IRQ));
}
void main ()
{
//Clear screen
clrscr ();
printf ("Demonstration of recording samples using DMA - by Steven Don\n");
printf ("------------------------------------------------------------\n");
//Look for the Sound Blaster
FindSB ();
//Assign memory to the DMA Buffer
AssignBuffer ();
//Set write buffer to first buffer
WBuffer = 0;
//Select microphone as the source
SelectSource (Microphone);
//Ask the user for a filename and prepare the file for output
PrepareFile ();
//Ask the user for IRQ and DMA channels
InitIRQandDMA ();
//Start playback
StartRecording ();
//Wait until escape is pressed
do; while (getch () != 27);
//End the recording
EndRecording ();
//Free the memory allocated to the sound buffer
free (DMABuffer);
//Release the IRQ and DMA channels
ReleaseIRQandDMA ();
}
سلام تو اين فايل ضميمه اي كه گاشتيد شماره ترانزيستورهاي منفي رو ننوشته ايد ميشه لطف كنيد شمارشونو بفرماييد و اينكه هر ترانزيستور منفي رو ميشه گذاشت؟
آقاي كرنل لطف كنيد اولا كمي در مورد پردازش تصوير توضيح بديد
ثانيا يه كمي هم در مورد اينكه وقتي بعد از اينكه ما يه ميكرو را مثلا در نرم افزار codevision برنامه ريزي كرديم حال اين ميكرو آمادست ولي چطوري اونو به كار بگيريم مثلا چطوري باهاش يه استپ موتور رو كنترل كنيم در چه جايي قرار بديم مدار خاصي بايد بسازيم و يا چطوري باهاش LED هارو روشن كنيم و غيره
خيلي ممنون اگه لطف كنيد و زودتر جواب بديد چون من نيازش دارم
ببخشید که یکم دیر دارم این سوال رو مطرح می کنم ... شماره منفی در پورت موازی برای وصل کردن پایه منفی LED کدومه !؟
سلام
اين برنامه PortTalk چه جوري رو ويندوز 7 عمل مي كنه؟
آقا اینجا همه چی قاطی شده و وضع حسابی به هم ریخته ! ...
پس به خواهشا به این نکته ها توجه کنین !
1. اگه تاپیک تعطیله و متولی نداره بیخودی خودتون رو خسته نکنین و پست اضافه ندین !
2. اگه تاپیک تعطیل نیست (که عملا تعطیله ! ) برای جواب دادن به سوال ها و ... سعی کنین بیشتر از ای میل هایهم استفاده کنین تا خیلی انجا شلوغ نشه !
3. ذلطفا مباحث خارج از پورت مطرح نکنید !!!
4. اگه تاپیک دوباره رونق نگرفت (که به احتمال 99 درصد ه8م نمی گیره ! ) یکی از دوستان که <تو این زمینه وارده> بحث ادامه بده یا یه جوری جمعش کنه تو رو خدا !
ممنون و موق باشید !
سلام
ممنون از تاپیک جذابتون
من دانشجوی رشته مهندسی ITهستم .سوالم این بود که برای طراحی روبات چه زمینه هایی رو باید یاد بگیرم و از چه دوستانی کمک بگیرم
حالا که تموم شد و رفت ولی می خواستم پیشنهاد بدم به جای استفاده از DLL و وابسته کردن خودتون بهش می تونید مستقیما با سی/سی پلاس پلاس با سخت افزار ارتباط برقرار کنید.
برای این کار
1- یک کرنل ساده درست کنید که برنامه رو خارج ازسیستم عامل اجرا کنه (با همکاری اسمبلی و سی پلاس پلاس به راحتی این کار انجام میشه !)
2- حالا ارتباط مستقیم رو با پورت و دستگاه ها تجربه کنید !
سلام،
دوست عزیز کی گفت تموم شد و رفت من به شخصه علاقه من به یادگیری هستم ولی در این زمینه ( ارتباط با سخت افزار مثلا برنامه نویسی رو پورت usb ) هیچی بلد نیستم ، کتاب فارسی خوب هم پیدا نکردم ، کسی هم نبود یاد بده.
این تاپیک اگر راه بیافته ( دوباره ) خیلی عالی میشه ، برای شروع و جهت افزایش هیجان لطف کن این چیزی که گفتی را توضیح بده و بی زحمت جوری توضیح بده که همه بتونن استفاده کنند، فکر کن داری تو کلاس درس می دی توی کلاس هم شاگرد قوی هست و هم متوسط و هم ضعیف.
اگه وقت بگذاری و توضیح بدی همه مدیونت می شویم.
با تشکر.
با سلام
میخواستم بدونم C++ میتونه مثل زبان سی با پورت ها ارتباط برقرار کنه از نظر سخت افزاری(کلا)؟؟؟
سپاس
لطفا یکی بیاد آموزش کار با پورت یو اس بی رو قرار بده خواهشا یا یک منبع خوب معرفی کنه
سلام به همه مهندسین عزیز
عزیزان سوالی داشتم خیلی خوشحال می شم که کمکم کنید-مرسی
من می خوام برنامه ای بنویسم که وقتی روی دکمه مثلا Record کلیک کردم صدایی را از میکروفن تو 10 ثانیه ضبط کنه و بعد از 10 ثانیه اون صدایی رو که ضبط کرده در جایی از هاردم ذخیره کنه و بلافاصله دومرتبه تو 10 ثانیه شروع به ضبط مجدد صدا و ذخیره آن کنه.
و این عمل را تا آنجایی ادامه بده که بر روی دکمه Stop کلیک کنم.
دوستان وارد و عزیزان برنامه نویس لطفا در کمکتون تعجیل بعمل آورید ، بدجوری نیاز به کمکتون دارم مرسی.
پس اون چیه ؟؟ API سیستم عامل ویندوز هست که شما میتونید در زبان برنامه نویسی مورد نظر خودتون اونو فراخوانی کنین !ممنون از راهنماییتون اما ترجیحا با
++c
راجع به input های پارالل هم توضیح میدید ؟ این که چجوری کد هاش رو بنویسم و ولتاژ مجازش چقدر هست؟